Hadoop 使用按时间戳分区的配置单元表进行sqoop导出时出现问题

Hadoop 使用按时间戳分区的配置单元表进行sqoop导出时出现问题,hadoop,hive,hdfs,sqoop,Hadoop,Hive,Hdfs,Sqoop,我无法sqoop导出按时间戳分区的配置单元表 我有一个按时间戳划分的蜂巢表。它创建的hdfs路径包含空格,我认为这会导致sqoop出现问题 fs-ls 2013-01-28 16:31/用户/蜂巢/仓库/我的桌子/天=2013-01-28 00%3A00%3A00 从sqoop导出时发生的错误: 13/01/28 17:18:23错误安全性。用户组信息:PriviledEdActionException as:brandon auth:简单原因:java.io.FileNotFoundExcep

我无法sqoop导出按时间戳分区的配置单元表

我有一个按时间戳划分的蜂巢表。它创建的hdfs路径包含空格,我认为这会导致sqoop出现问题

fs-ls 2013-01-28 16:31/用户/蜂巢/仓库/我的桌子/天=2013-01-28 00%3A00%3A00

从sqoop导出时发生的错误:

13/01/28 17:18:23错误安全性。用户组信息:PriviledEdActionException as:brandon auth:简单原因:java.io.FileNotFoundException:文件不存在:/user/hive/warehouse/my_table/day=2012-10-29 00%3A00%3A00 位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimesFSNamesystem.java:1239 位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsIntFSNamesystem.java:1192 位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsFSNamesystem.java:1165 位于org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsFSNamesystem.java:1147 位于org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocationsNameNodeRpcServer.java:383 位于org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocationsClientNamenodeProtocolServerSideTranslatorPB.java:170 在org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethodClientNamenodeProtocolProtos.java:44064 在org.apache.hadoop.ipc.protobufrpceengine$Server$protobufrpccinvoker.callprotobufrpceengine.java:453 在org.apache.hadoop.ipc.RPC$Server.callRPC.java:898 位于org.apache.hadoop.ipc.Server$Handler$1.runServer.java:1693 位于org.apache.hadoop.ipc.Server$Handler$1.runServer.java:1689 位于java.security.AccessController.doPrivilegeEdNative方法 位于javax.security.auth.Subject.doassObject.java:396 位于org.apache.hadoop.security.UserGroupInformation.doasurgroupinformation.java:1332 位于org.apache.hadoop.ipc.Server$Handler.runServer.java:1687

如果你这样做 fs-ls/用户/蜂巢/仓库/我的桌子/天=2013-01-28 00%3A00%3A00 ls:/user/hive/warehouse/my_table/day=2013-01-28”:没有这样的文件或目录 ls:00%3A00%3A00':没有这样的文件或目录

如果您添加引号,则该选项有效: brandon@prod-namenode新建:~$fs-ls/user/hive/warehouse/my_table/day=2013-01-28 00%3A00%3A00 找到114件物品 -rw-r-r-2布兰登超级组4845 2013-01-28 16:30/用户/蜂巢/仓库/我的桌子/天=2013-01-28%2000%253A00%253A00/0000000 所以你可以做的是:

从配置单元中选择所有数据并将其写入HDFS中的目录

使用插入覆盖目录“…路径…”从表a中选择a.column_1,a.column_n

在sqoop命令中,使用-export dir..dir.指定目录位置


希望这会有所帮助。

您可以尝试使用/user/hive/warehouse/my_table/day=2013-01-28*

带冒号的文件名:不支持作为这些文件中提到的HDFS路径。但可以通过将其转换为十六进制来工作。但是当sqoop再次尝试读取该路径时,它将其转换为冒号:因此它无法找到该路径。我建议从目录名中删除时间部分,然后重试。希望这能回答您的问题。

您可以吗共享您正在使用的整个Sqoop命令?