![如何安装“Beeline”Hive 客户端?](https://linux22.com/image/876242/%E5%A6%82%E4%BD%95%E5%AE%89%E8%A3%85%E2%80%9CBeeline%E2%80%9DHive%20%E5%AE%A2%E6%88%B7%E7%AB%AF%EF%BC%9F.png)
如何安装 Hive 客户端,beeline
而无需在笔记本电脑上安装所有 Hive/Hadoop 生态系统?
我想用它来查询远程 Hive 数据库。
答案1
您可以通过安装 Hive 和 Hadoop(Hadoop 是 Hive 的必要依赖项)来获得直线。
首先从以下位置下载 Hadoop 通用http://www.apache.org/dyn/closer.cgi/hadoop/common/. 解压并将变量设置HADOOP_HOME
到此位置。例如:
$ wget https://apache.uib.no/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
$ tar -xzvf hadoop-3.3.6.tar.gz
$ export HADOOP_HOME="$(pwd)/hadoop-3.3.6" # You may want set this var in your .bashrc
其次,为了运行 Hadoop,您需要确保JAVA_HOME
设置如下:
# Find java home:
$ java -XshowSettings:properties -version 2>&1 | grep java.home
java.home = /usr/lib/jvm/java-21-openjdk-amd64
$ export JAVA_HOME=/usr/lib/jvm/java-21-openjdk-amd64 # Replace with your JAVA_HOME
第三,下载垃圾桶Hive 版本来自https://hive.apache.org/downloads.html,解压后即可运行bin/beeline
。例如:
$ wget https://apache.uib.no/hive/hive-3.1.3/apache-hive-3.1.3-bin.tar.gz
$ tar -xzvf apache-hive-3.1.3-bin.tar.gz
$ cd apache-hive-3.1.3-bin
$ bin/beeline --version
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/tmp/ttt/apache-hive-3.1.3-bin/lib/log4j-slf4j-impl-2.17.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/tmp/ttt/hadoop-3.3.6/share/hadoop/common/lib/slf4j-reload4j-1.7.36.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive 3.1.3
Git git://MacBook-Pro.fios-router.home/Users/ngangam/commit/hive -r 4df4d75bf1e16fe0af75aad0b4179c34c07fc975
Compiled by ngangam on Sun Apr 3 16:58:16 EDT 2022
From source with checksum 5da234766db5dfbe3e92926c9bbab2af
答案2
无需安装 beeline/hive。您所要做的就是从系统中收集相关的 jar 文件,然后将其复制并放在一个文件夹中。
假设我们有一个拥有直线的源系统和一个想要运行直线的目标系统。
在源系统上,将相关 jar 文件收集到一个文件夹中。我发现识别所涉及的确切 jar 文件的最佳方法是使用 jvm 选项:-verbose:class
即,您应该能够发出一个java
命令,该命令将在源系统上复制典型的直线命令调用。
然后将这些文件复制到目标系统上的一个文件夹中,cd
以便-classpath
以后引用时简单。
我使用 HDP 2.5 Hortonworks 发行版。对于我来说,在目标系统上执行以下调用是有效的:
java -Xmx1024m -classpath apache-log4j-extras-1.2.17.jar:avatica-1.8.0.2.5.0.0-1245.jar:calcite-core-1.2.0.2.5.0.0-1245.jar:calcite-linq4j-1.2.0.2.5.0.0-1245.jar:commons-cli-1.2.jar:commons-codec-1.4.jar:commons-collections-3.2.2.jar:commons-configuration-1.6.jar:commons-lang-2.6.jar:commons-logging-1.1.3.jar:curator-client-2.6.0.jar:curator-framework-2.6.0.jar:derby-10.10.2.0.jar:guava-14.0.1.jar:hadoop-annotations-2.7.3.2.5.0.0-1245.jar:hadoop-auth-2.7.3.2.5.0.0-1245.jar:hadoop-common-2.7.3.2.5.0.0-1245.jar:hadoop-mapreduce-client-core-2.7.3.2.5.0.0-1245.jar:hive-beeline-1.2.1000.2.5.0.0-1245.jar:hive-exec-1.2.1000.2.5.0.0-1245.jar:hive-jdbc-1.2.1000.2.5.0.0-1245.jar:hive-jdbc-1.2.1000.2.5.0.0-1245-standalone.jar:jce.jar:jline-2.12.jar:jsse.jar:log4j-1.2.16.jar:rt.jar:slf4j-log4j12-1.7.10.jar:sunec.jar:sunjce_provider.jar:super-csv-2.2.0.jar:xercesImpl-2.9.1.jar -Dhdp.version=2.5.0.0-1245 -Djava.net.preferIPv4Stack=true -Dhdp.version=2.5.0.0-1245 -Dhadoop.log.dir=/home/userid -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/userid -Dhadoop.id.str=userid -Dhadoop.root.logger=INFO,console -Djava.library.path=:/home/userid -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.util.logging.config.file=/home/userid/parquet-logging.properties -Dlog4j.configuration=beeline-log4j.properties -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /home/userid/hive-beeline-1.2.1000.2.5.0.0-1245.jar org.apache.hive.beeline.BeeLine -n userid -p pass -u "jdbc:hive2://knox.company.com:8000/;ssl=true;transportMode=http;httpPath=gateway/tdcprd/hive"
有些参数可能不是必需的,但我保留了它们,因为这就是源系统上的做法。您应该使用源系统的 java 调用作为参考模式。