OracleからHiveにデータを移動する必要があり、Sqoopが役に立つツールであることがわかりました。 問題は、クエリを処理し、結果をデスティネーションデータベースのテーブルに挿入する必要があることです。Sqoop with query clause
Oracle関数の結果 - > HiveDB.myTable
私は、このコマンドが見つかりました:
sqoop import --connect jdbc:oracle:thin:@******:1522/** --username myUsername --password pwd --query '...' --hive-import --split-by "myID" --hive-table "hive-table" --hive-database "hive-database"
を私は--target-dir
義務を指定する必要があり、私が書き込み権限を持っていませんHDFS。
これは、私が--table
を使用する場合、--target-dir
を使用する必要がないため、--queryを使用する場合にのみ当てはまります。
クエリを使用して"--target-dir"
プロパティを回避する方法があるかどうかは誰でも知っていますか?
クエリオプションにtarget-dirを使用することは避けられません。 HDFSに書き込む権限がないと言うと、target-dirを無視するように選択したテーブルオプションでは、SQOOPはHDFSに書き込むのに対し、デフォルトの場所に書き込むため、これは当てはまりません。デフォルトの場所は、/ user/hive/warehouse//にあります。ターゲットディレクトリとしてこの場所を試してください。私はそこにデータが書き込まれると確信しています。 –
Ramesh
もう1つのオプションは--target-dirを必要としない "--where"オプションを使うことです。このオプションは、単一のテーブルからインポートする場合に機能します。 –
@Ramesh --target-dir/user/hive/warehouse/<ハイブデータベース>/<ハイブテーブル名>を指定しようとしましたが、/ user/hive/warehouseフォルダを読み書きできません。 – gnobile