2017-10-16 10 views
1

私は、年表&に基づいてパーティション化された顧客の詳細を持つoracle(表名はTRCUS)の表を持っています。 Oracleで パーティション名: PERIOD_JAN_13、 PERIOD_FEB_13、 PERIOD_JAN_14、 PERIOD_FEB_14などSQoopでOracleからハイブ・パーティション表を動的に作成し、データをインポートします

今、私は直接SQOOPを使用してHIVEに、このテーブルのデータをインポートしたいです。

Sqoopジョブは、ハイブテーブルを作成し、Oracleテーブルパーティションに基づいてパーティションを動的に作成し、ハイブにインポートする必要があります。それぞれの区画に入れる。

これはどのようにSQOOPを使用して達成できますか?

答えて

2

残念ながら、Sqoopを使用して達成することはできません。しかし、あなたが知らないかもしれないと思う方法があります。

  1. パーティションなしでHiveでテーブルを作成します。
  2. 設定動的パーティションモード

    SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict;

  3. sqoop import --connect "jdbc:mysql://quickstart.cloudera:3306/database1" --username root --password cloudera --query 'SELECT DISTINCT id, count from test WHERE $CONDITIONS' --target-dir /user/hive/warehouse/ --hive-table pd_withoutpartition --hive-database database1 --hive-import --hive-overwrite -m 1 --direct

  4. Sqoop

    使用パーティションを持つ別のテーブルを作成して分割されていないハイブテーブルへのデータのインポート

  5. 上書きパーティションテーブルへメートル前のテーブル

    INSERT OVERWRITE TABLE pd_partition partition(name) SELECT id, count, name from pd_withoutpartition;

注:select文で上書き時に最後に言及されているパーティションにしたいと必ずその列を作成します。

ハイブバージョン:ハイブ1.1.0-cdh5.13.1

関連する問題