2016-12-04 35 views
0

我正在使用sqoop将数据导入到hadoop。我正在使用下面的命令将表导入hadoop。将表中的特定分区导入hadoop

sqoop import \ 
--connect jdbc:oracle:thin:@172.16.XXX.XXX:15XX:TABS \ 
--username user \ 
--password pass \ 
--table TABS.ADM_LOG0009 \ 
--target-dir /hadoop/hptabs/recharge 

现在我有另一个名为IVM_IMAGE的表,它是一个分区表。我只想从Oracle导入3个分区到hadoop。请帮我写这个命令。

  • Oracle表名:TABS.IVM_IMAGE
  • 分区:LESS20161101,LESS20161001,LESS20160901
  • Partiton键:BILLDATE

  • HIVE表名:hptabs.IVM_IMAGE

表格属性:

划分为(BILLDATE TIMESTAMP)行格式限定字段 ','LOCATION'hdfs:/ hadoop/hptabs/usage';

+0

你的意思是* * Hive表名**不是** Hadoop表名**。对? –

+0

是Hive表名。 –

+2

[this](https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html#_match_hadoop_files_to_oracle_table_partitions)将有所帮助。 –

回答

1

要导入特定的分区,我需要 “-Doraoop.import.partitions = ' ”LESS20161101“, ”LESS20161001“, ”LESS20160901“,'” 添加到我的sqoop命令

sqoop import \ 
-Doraoop.disabled=false \ 
-Doraoop.import.partitions='"LESS20161101","LESS20161001","LESS20160901",' \ 
--connect jdbc:oracle:thin:@172.16.XXX.XXX:15XX:TABS \ 
--username user \ 
--password password \ 
--table TABS.IVM_IMAGE \ 
--target-dir /hadoop/hptabs/usage/ \ 
-m 1