簡體   English   中英

Sqoop從oracle動態創建hive分區表並導入數據

[英]Sqoop to dynamically create hive partitioned table from oracle and import data

我在 oracle 中有一個表(表名是 TRCUS),其中包含客戶的詳細信息,根據年和月進行分區。 Oracle 中的分區名稱:PERIOD_JAN_13、PERIOD_FEB_13、PERIOD_JAN_14、PERIOD_FEB_14 等

現在我想直接使用 SQOOP 將此表的數據導入到 HIVE 中。

Sqoop作業要創建一個hive表,根據oracle表分區動態創建分區,然后將數據導入hive; 進入各自的分區。

如何使用 SQOOP 實現這一目標?

不幸的是,使用 Sqoop 無法實現。 但是,我想您可能不知道有一種方法。

  1. 在 Hive 中創建一個沒有任何分區的表。
  2. 設置動態分區模式

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

  3. 將數據導入未使用 Sqoop 分區的 Hive 表

    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. 創建另一個帶有分區的表

  5. 從前一個表覆蓋到分區表

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

注意:確保在 select 語句的覆蓋期間最后提到要分區的列。

蜂巢版本:蜂巢1.1.0-cdh5.13.1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM