Sqoop从oracle动态创建hive分区表并导入数据

时间:2017-10-16 07:14:37

标签: hadoop hive sqoop

我在oracle中有一个表(表名为TRCUS),其中包含客户的详细信息,根据年份和时间进行分区。月。 Oracle中的分区名称: PERIOD_JAN_13, PERIOD_FEB_13, PERIOD_JAN_14, PERIOD_FEB_14等

现在我想直接使用SQOOP将此表的数据导入HIVE。

Sqoop作业应创建一个hive表,根据oracle表分区动态创建分区,然后将数据导入hive;进入各自的分区。

如何使用SQOOP实现这一目标?

1 个答案:

答案 0 :(得分:3)

不幸的是,使用Sqoop无法实现。但是,我猜你可能不知道有一种方法。

  1. 在Hive中创建一个没有任何分区的表。
  2. 设置动态分区模式

    </ul><?php // <------------------------------- This </ul> shouldn't be here /* fetch associative array */ while ($row = mysqli_fetch_row($result)) { echo '<li><a href="#">' . $row[0] . '</a></li>'; } ?> </ul>

  3. 将数据导入未使用Sqoop分区的Hive表

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

  4. 创建另一个包含分区的表

  5. 覆盖上表中的分区表

    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

  6. 注意:确保在select语句中覆盖期间最后提到要分区的列。

    Hive版本:Hive 1.1.0-cdh5.13.1