我想使用org.apache.hadoop.hive
Metastore。
hive(1.1) 和 hadoop(2.6 版) 安装在 linux 服务器上。我的电脑有一个windows操作系统。在这里,我正在尝试创建 Hive conf。
import org.apache.hadoop.hive.conf.HiveConf;
public class Main {
public static void main(String[] args){
HiveConf hiveConf = new HiveConf();
hiveConf.setIntVar(HiveConf.ConfVars.METASTORETHRIFTCONNECTIONRETRIES, 3);
hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://server:port");
HiveMetastore hiveMetaStoreConnector = new HiveMetastore(hiveConf);
if(hiveMetaStoreConnector != null){
System.out.print(hiveMetaStoreConnector.getAllPartitionInfo("tablename"));
}
}
}
但是我遇到了一个问题HiveConf hiveConf = new HiveConf();
严重:无法在 hadoop 二进制路径中找到 winutils 二进制文件 java.io.IOException:无法在 Hadoop 二进制文件中找到可执行的 null\bin\winutils.exe。在
org.apache.hadoop.util.Shell.getQualifiedBinPath(Shell.java:379) 在
org.apache.hadoop.util.Shell.getWinUtilsPath(Shell.java:394) 在 org.apache.hadoop.util.Shell.( Shell.java:387) 在
org.apache.hadoop.hive.conf.HiveConf$ConfVars.findHadoopBinary(HiveConf.java:2065)
在 org.apache.hadoop.hive.conf.HiveConf$ConfVars.(HiveConf.java:332 )
在 org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:95) 在 Main.main(Main.java:11) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:497) 在 com。 intellij.rt.execution.application.AppMain.main(AppMain.java:144) org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:95) 处
的线程“main”java.lang.ExceptionInInitializerError 异常
Sun.reflect.NativeMethodAccessorImpl.invoke0 的 Main.main(Main.java:11) (Native Method) sun.reflect.NativeMethodAccessorImpl.invoke
(NativeMethodAccessorImpl.java:62)
在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
在 java.lang.reflect.Method.invoke(Method.java:497) 在 com.intellij.rt.execution.application.AppMain.main(AppMain.java :144) 原因:java.lang.RuntimeException: 无法
在 org.apache.hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.java:86) 的类 null 中加载 shims
在 org.apache.hadoop.hive.shims.ShimLoader.getHadoopShims(ShimLoader.java:62) 在 org.apache.hadoop.hive.conf.HiveConf$ConfVars.(HiveConf.java:335) ... 7 更多: java.lang.NullPointerException at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:264) at org.apache.hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.爪哇:83)... 9更多
我应该在我的 Windows(winutils.exe)上安装 hadoop 客户端吗?还是我应该包含更多库?
另外,我只需要设置 confhiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://server:port")
吗?
还是与设置smth有关?
任何建议将不胜感激。