Я хочу использовать org.apache.hadoop.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();
СЕРЬЕЗНЫЙ: Не удалось найти двоичный файл winutils в двоичном пути Hadoop java.io.IOException: Не удалось найти исполняемый файл null\bin\winutils.exe в двоичных файлах Hadoop. в
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) в солнце. 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)
Исключение в потоке "main" java. lang.ExceptionInInitializerError
в org.apache.hadoop.hive.conf.HiveConf.(HiveConf.java:95) в Main.main(Main.java:11) в sun.reflect.NativeMethodAccessorImpl.invoke0(собственный метод) < br>at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method .java:497) в com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) Причина: java.lang.RuntimeException: не удалось загрузить прокладки в классе null
в org.apache. hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.java:86)
на org.apache.hadoop.hive.shims.ShimLoader.getHadoopShims(ShimLoader.java:62) на org.apache.hadoop.hive.conf .HiveConf$ConfVars.(HiveConf.java:335) ... еще 7 Вызывается: java.lang.NullPointerE xception на java.lang.Class.forName0 (собственный метод) на java.lang.Class.forName (Class.java:264) на org.apache.hadoop.hive.shims.ShimLoader.loadShims(ShimLoader.java:83) . .. еще 9
Должен ли я установить клиент Hadoop на свои окна (winutils.exe)? Или я должен включить больше библиотек?
Кроме того, мне нужно установить conf только hiveConf.setVar(HiveConf.ConfVars.METASTOREURIS, "thrift://server:port")
?
Или это как-то связано с настройкой чего-то?
Любые предложения будут оценены.
HADOOP_HOME
и добавьте%HADOOP_HOME%/bin
к вашемуPATH
. - person Ben Watson   schedule 21.03.2018