Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/hadoop/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hadoop Sqoop从oracle动态创建配置单元分区表并导入数据_Hadoop_Hive_Sqoop - Fatal编程技术网

Hadoop Sqoop从oracle动态创建配置单元分区表并导入数据

Hadoop Sqoop从oracle动态创建配置单元分区表并导入数据,hadoop,hive,sqoop,Hadoop,Hive,Sqoop,我在oracle中有一个表(表名为TRCUS),包含客户的详细信息,根据年份和月份进行分区。 Oracle中的分区名称: 1月13日, 期间(二月十三日), 2014年1月14日, 期间2月14日等 现在我想直接使用SQOOP将这个表的数据导入到配置单元中 Sqoop作业应该创建一个配置单元表,基于oracle表分区动态创建分区,然后将数据导入配置单元;进入相应的分区 如何使用SQOOP实现这一点 不幸的是,使用Sqoop无法实现。然而,有一种方法我想你可能不知道 在配置单元中创建不带任何分区的

我在oracle中有一个表(表名为TRCUS),包含客户的详细信息,根据年份和月份进行分区。 Oracle中的分区名称: 1月13日, 期间(二月十三日), 2014年1月14日, 期间2月14日等

现在我想直接使用SQOOP将这个表的数据导入到配置单元中

Sqoop作业应该创建一个配置单元表,基于oracle表分区动态创建分区,然后将数据导入配置单元;进入相应的分区


如何使用SQOOP实现这一点

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

  • 在配置单元中创建不带任何分区的表
  • 设置动态分区模式

    设置hive.exec.dynamic.partition=true;
    设置hive.exec.dynamic.partition.mode=nonstrict

  • 将数据导入到未使用Sqoop分区的配置单元表中

    sqoop导入--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 1--hive import--hive overwrite-m 1--direct

  • 使用分区创建另一个表

  • 从上一个表覆盖到分区表中

    INSERT OVERWRITE TABLE pd_partition partition(name)选择id、count、name from pd_withoutpartition

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


    配置单元版本:配置单元1.1.0-cdh5.13.1

    sqoop在实现动态分区方面有什么改进吗?