我在oracle中有一个表(表名为TRCUS),其中包含客户的详细信息,根据年份和时间进行分区。月。 Oracle中的分区名称: PERIOD_JAN_13, PERIOD_FEB_13, PERIOD_JAN_14, PERIOD_FEB_14等
现在我想直接使用SQOOP将此表的数据导入HIVE。
Sqoop作业应创建一个hive表,根据oracle表分区动态创建分区,然后将数据导入hive;进入各自的分区。
如何使用SQOOP实现这一目标?
答案 0 :(得分:3)
不幸的是,使用Sqoop无法实现。但是,我猜你可能不知道有一种方法。
设置动态分区模式
</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>
将数据导入未使用Sqoop分区的Hive表
SET hive.exec.dynamic.partition = true;
SET hive.exec.dynamic.partition.mode = nonstrict;
创建另一个包含分区的表
覆盖上表中的分区表
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
注意:确保在select语句中覆盖期间最后提到要分区的列。
Hive版本:Hive 1.1.0-cdh5.13.1