Hive无法将文件加载到表中,因为它无法在Hive仓库中找到文件

时间:2018-12-21 05:39:29

标签: hive hdfs hadoop2 ambari

我无法将数据加载到配置单元表中,并且日志显示此问题

我要加载的文件:

  

[hdfs @ vmi200937 root] $ hdfs dfs -ls / suppression-files找到1项   -rw-rw-rw- 3 hdfs hdfs 694218562 2018-12-21 05:06 /suppression-files/md5.txt

配置目录:

  

[hdfs @ vmi200937 root] $ hdfs dfs -ls   /apps/hive/warehouse/suppression.db找到1项drwxrwxrwx-Hive   hadoop 0 2018-12-21 06:30   /apps/hive/warehouse/suppression.db/md5supp

配置查询:

  

配置单元(抑制)> LOAD DATA INPATH'/suppression-files/md5.txt'INTO   表md5supp;

日志:

  

将数据加载到表抑制中。md5supp出现异常失败   java.io.FileNotFoundException:目录/文件不存在   /apps/hive/warehouse/suppression.db/md5supp/md5.txt位于   org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkOwner(FSDirectory.java:1901)     在   org.apache.hadoop.hdfs.server.namenode.FSDirAttrOp.setOwner(FSDirAttrOp.java:82)     在   org.apache.hadoop.hdfs.server.namenode.FSNamesystem.setOwner(FSNamesystem.java:1877)     在   org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.setOwner(NameNodeRpcServer.java:828)     在   org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.setOwner(ClientNamenodeProtocolServerSideTranslatorPB.java:476)     在   org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java)     在   org.apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)     在org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:982)处   org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2351)在   org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2347)在   java.security.AccessController.doPrivileged(本机方法),位于   javax.security.auth.Subject.doAs(Subject.java:422)在   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)     在org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2347)

     

FAILED:执行错误,从以下位置返回代码40000   org.apache.hadoop.hive.ql.exec.MoveTask。   java.io.FileNotFoundException:目录/文件不存在   /apps/hive/warehouse/suppression.db/md5supp/md5.txt位于   org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkOwner(FSDirectory.java:1901)     在   org.apache.hadoop.hdfs.server.namenode.FSDirAttrOp.setOwner(FSDirAttrOp.java:82)     在   org.apache.hadoop.hdfs.server.namenode.FSNamesystem.setOwner(FSNamesystem.java:1877)     在   org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.setOwner(NameNodeRpcServer.java:828)     在   org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.setOwner(ClientNamenodeProtocolServerSideTranslatorPB.java:476)     在   org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos $ ClientNamenodeProtocol $ 2.callBlockingMethod(ClientNamenodeProtocolProtos.java)     在   org.apache.hadoop.ipc.ProtobufRpcEngine $ Server $ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)     在org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:982)处   org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2351)在   org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2347)在   java.security.AccessController.doPrivileged(本机方法),位于   javax.security.auth.Subject.doAs(Subject.java:422)在   org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1869)     在org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2347)

1 个答案:

答案 0 :(得分:0)

我找到了解决方案! 我应该将目录/ suppression-file的所有者设置为hive:hdfs 通过hdfs dfs chown -R hive:hdfs / suppression-file