![](/img/trans.png)
[英]Import selected data from oracle db to S3 using sqoop and create hive table script on AWS EMR with selected data
[英]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 無法實現。 但是,我想您可能不知道有一種方法。
設置動態分區模式
SET hive.exec.dynamic.partition = true; SET hive.exec.dynamic.partition.mode = nonstrict;
將數據導入未使用 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
創建另一個帶有分區的表
從前一個表覆蓋到分區表
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.