繁体   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