0

タイムスタンプで分割されたハイブ テーブルを sqoop エクスポートできません。

タイムスタンプで分割されたハイブ テーブルがあります。それが作成する hdfs パスには、sqoop で問題を引き起こしていると思われるスペースが含まれています。

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

sqoop エクスポートからのエラー:

13/01/28 17:18:23 エラー security.UserGroupInformation: PriviledgedActionException as: ブランドン (認証: 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.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(ネイティブメソッド) で 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) で170) 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 org.apache. hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1687)170) 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 org.apache. hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop.ipc.Server$Handler.run(Server.java:1687)org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453) の callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) 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 Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:453) の callBlockingMethod(ClientNamenodeProtocolProtos.java:44064) 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 Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)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 Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at org.apache.hadoop .ipc.Server$Handler.run(Server.java:1687)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 Method) at javax.security.auth.Subject.doAs(Subject.java:396) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1332) at 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': No such file or directory を実行した場合

引用符を追加すると機能します: brandon@prod-namenode-new:~$ fs -ls /user/hive/warehouse/my_table/day="2013-01-28 00%3A00%3A00" Found 114 items -rw-r --r-- 2 ブランドン スーパーグループ 4845 2013-01-28 16:30 /user/hive/warehouse/my_table/day=2013-01-28%2000%253A00%253A00/000000_0 ...

4

3 に答える 3

1

「/user/hive/warehouse/my_table/day=2013-01-28*」として試すことができます。

于 2014-08-08T21:52:20.520 に答える
0

だからあなたができることは次のとおりです。

ハイブからすべてのデータを選択し、HDFS のディレクトリに書き込みます

( INSERT OVERWRITE DIRECTORY '..path..' select a.column_1, a.column_n FROM table a を使用) 、

sqoop コマンドで--export-dir ..dir.を使用してディレクトリの場所を指定します。

これが役立つことを願っています。

于 2013-07-19T18:33:20.737 に答える
0

コロン (:) を含むファイル名は、これらのjiraで言及されているように、HDFS パスとしてサポートされていません。しかし、16 進数に変換することで機能します。ディレクトリ名から時刻の部分を削除して、もう一度やり直すことをお勧めします。これがあなたの質問に答えてくれることを願っています。

于 2014-08-09T05:52:12.440 に答える