hadoop - 带有按时间戳分区的配置单元表的 sqoop 导出问题

标签 hadoop hive hdfs sqoop

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

我有一个按时间戳分区的配置单元表。它创建的 hdfs 路径包含我认为导致 sqoop 问题的空格。

fs -ls
2013-01-28 16:31/user/hive/warehouse/my_table/day=2013-01-28 00%3A00%3A00

从 sqoop 导出的错误:

28 年 13 月 1 日 17:18:23 错误 security.UserGroupInformation:PriviledgedActionException as:brandon (auth:SIMPLE) 原因:java.io.FileNotFoundException:文件不存在:/user/hive/warehouse/my_table/day=2012- 10-29 00%3A00%3A00
在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsUpdateTimes(FSNamesystem.java:1239)
在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocationsInt(FSNamesystem.java:1192)
在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1165)
在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getBlockLocations(FSNamesystem.java:1147)
在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getBlockLocations(NameNodeRpcServer.java:383)
在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getBlockLocations(ClientNamenodeProtocolServerSideTranslatorPB.java:170)
在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java:44064)
在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453)
在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:898)
在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1693)
在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:1689)
在 java.security.AccessController.doPrivileged( native 方法)
在 javax.security.auth.Subject.doAs(Subject.java:396)
在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332)
在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:1687)

如果你这样做
fs -ls/user/hive/warehouse/my_table/day=2013-01-28 00%3A00%3A00
ls: /user/hive/warehouse/my_table/day=2013-01-28': No such file or directory ls: 00%3A00%3A00':没有这样的文件或目录

如果您添加引号,它会起作用:
Brandon@prod-namenode-new:~$ fs -ls/user/hive/warehouse/my_table/day="2013-01-28 00%3A00%3A00"
找到 114 项目
-rw-r--r-- 2 布兰登 super 组 4845 2013-01-28 16:30/user/hive/warehouse/my_table/day=2013-01-28%2000%253A00%253A00/000000_0
...

最佳答案

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

关于hadoop - 带有按时间戳分区的配置单元表的 sqoop 导出问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14567746/

相关文章:

hadoop - Hive 理解表创建

hadoop - 收到警告 ipc.Client : interrupted waiting to send params to server when copying files to HDFS

java - 无法使用sqoop将mysql表导入到hadoop

hadoop - 如何将文件添加到 Hive

jdbc - Hive JDBC 与 CLI 客户端

java - 对数据摄取Hadoop感到困惑

hadoop - hadoop我如何创建跨多个 block 的输入拆分

java - Amazon EMR 中的 org.apache.hadoop.mapred.FileAlreadyExistsException

hadoop - 在配置单元中执行查询时显示 Tez 顶点错误

sql - 使用 impala 按范围连接表的有效方法