「sqoopcreate-hive-table」を使用してHiveでテーブルスキーマを作成したいと思います。私のDBはOracleDatabase10g Enterprise Edition 10.2.0.4.0であり、sqoop-1.2.0-cdh3u0とhive-0.7.0-cdh3u0を使用しています。後でHiveテーブルにロードするデータはすでにHDFSにあります。手動で作成して後でデータをロードするよりも、sqoop&hiveによってテーブルメタデータを自動的に作成する方がよいでしょう。
これが私が実行するコマンドです:
$ sqoop create-hive-table --connect jdbc:oracle:thin:@//dbserver:1521/masterdb
--username myuser --table DBFUNC1.R1_EVOLUTION
--fields-terminated-by ',' -P
そして、私は次のエラーを受け取ります:
11/05/12 11:33:11 INFO hive.HiveImport:アップロードされたデータをHiveにロードしています
11/05/12 11:33:12 INFO manager.OracleManager:タイムゾーンがGMTに設定されました11/05/12
11:33:12 INFO manager.SqlManager:SQLステートメントの実行:SELECTt。*FROM BFUNC1.R1_EVOLUTION t WHERE 1 = 0
11/05/12 11:33:14 INFO hive.HiveImport:Hive履歴ファイル= / tmp / edjatsay / hive_job_log_edjatsay_201105121133_1466429457.txt
11/05/12 11:33:14 INFO hive.HiveImport:FAILED:Parse Error:line 1:58不一致入力')'列指定に識別子が必要です
11/05/12 11:33:14 INFO hive.HiveImport:
11/05/12 11:33:14エラーtool.CreateHiveTableTool:テーブル作成ジョブの実行中にIOExceptionが発生しました:java.io.IOException:Hiveがステータス11で終了しました
DB内のテーブルのスキーマは次のとおりです。
SQL> describe BFUNC1.R1_EVOLUTION;
OWNER_ID NOT NULL NUMBER(38)
AI_CODE NOT NULL CHAR(3)
TA_NUMBER NOT NULL NUMBER(38)
RULE NOT NULL CHAR(4)
F_CLASS NOT NULL CHAR(8)
EVOLUTION_ID NOT NULL NUMBER(38)
CREATION_MODIFID NUMBER(38)
DISC_MODIFID NUMBER(38)
CREATION_DATETIME CHAR(19)
ENDED_DATETIME CHAR(19)
EVOLUTION_STATE CHAR(1)
よろしくお願いします。