Не удалось установить связь с ульем?

Я делаю связь с кустом, используя java-код, но я становлюсь ниже ошибки -

log4j: WARN Для регистратора не найдено никаких приложений (org.apache.thrift.transport.TSaslTransport). log4j: WARN Пожалуйста, правильно инициализируйте систему log4j. log4j: WARN Для получения дополнительной информации см. <a href="http://logging.apache.org/log4j/1.2/faq.html#noconfig%23noconfig" rel="nofollow noreferrer" target="_blank">http://logging.apache.org/log4j/1.2/faq.html#noconfig</a>. Исключение в потоке "main" java.sql.SQLException: Ошибка при обработке оператора: FAILED: Ошибка выполнения, код возврата 1 из org.apache.hadoop.hive.ql.exec.DDLTask. MetaException (сообщение: Получено исключение: org.apache.hadoop.security.AccessControlException. Разрешено: user = anonymous, access = WRITE, inode = "/": oodles: supergroup: drwxr-xr-x at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:271) в org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:257) в org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:238). (FSNamesystem.java:5904) в org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5886) в org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkAncestorAccess(FSNamesystem.java: 5860). rver.namenode.FSNamesystem.mkdirsInt(FSNamesystem.java:3763) в org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3737) в org.apache.hadoop.hdfs.server.namenode. NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:778) в org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:573) в org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java) на org.apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585) на org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:928) на org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2013) в org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2009) в java.security.AccessController. doPrivileged (собственный метод) в javax.security.auth.Subject.doAs(Subject.java:415) в org.apache.hadoop.security.UserGroupInformation.doAs(UserGrou pInformation.java:1614) на org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2007)) на org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:275) в com. oodles.example.HiveJdbcClient.main(HiveJdbcClient.java:23)

Мой код Java ниже

package com.oodles.example;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class HiveJdbcClient {
 private static String driverName = "org.apache.hive.jdbc.HiveDriver";
 public static void main(String[] args) throws SQLException {
 try {
 Class.forName(driverName);
 } catch (ClassNotFoundException e) {
 e.printStackTrace();
 }
 Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/default", "", "");
 Statement stmt = con.createStatement();
 String tableName = "testHiveDriverTable";
 stmt.execute("drop table if exists " + tableName);
 stmt.execute("create table " + tableName + " (key int, value string)");
 System.out.println("success!");
 stmt.close();
 con.close();
 }
}

и моя другая забота заключается в том, что всякий раз, когда я подключаюсь без запуска служб hadoop, он дает ошибку

log4j:WARN No appenders could be found for logger (org.apache.thrift.transport.TSaslTransport).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: java.net.ConnectException Call From oodles-Latitude-3540/127.0.1.1 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: http://wiki.apache.org/hadoop/ConnectionRefused)
 at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:275)
 at com.oodles.example.HiveJdbcClient.main(HiveJdbcClient.java:21)

более поздняя проблема будет решена, если я начну пользоваться услугами onoop, поэтому я хочу спросить, является ли обязательным начало сервисов hadoop для установления связи с ульем?

1 ответ

Поскольку вы не упомянули, какую версию Hive используете, но основываетесь на имени драйвера и соединении URl, я предполагаю, что вы используете Hive 0.11 или выше.

Поэтому в Hive 0.11 или выше вам нужно указать имя пользователя в URL-адресе Connection:

DriverManager.getConnection("jdbc:hive2://localhost:10000/default", <user_name>, "")

NOTE: This user should have read+write permissions in HDFS.
</user_name>

Что касается второго запроса:

Я совершенно уверен, что услуги Hadoop не требуются только для подключения. Я этого никогда не пробовал.

Его мое предположение, поскольку мы должны упомянуть базу данных в URL-адресе подключения, который является каталогом в HDFS. Поэтому для проверки наличия этого каталога может потребоваться служба NAMENODE.

Надеюсь, поможет...!!!

licensed under cc by-sa 3.0 with attribution.