使用sqoop将数据从oracle导入hive - 不能使用--hive-partition-key

时间:2015-05-06 08:14:51

标签: oracle hadoop hive sqoop

我有一张简单的表格:

create table osoba(id number, imie varchar2(100), nazwisko varchar2(100), wiek integer);
insert into osoba values(1, 'pawel','kowalski',36);
insert into osoba values(2, 'john','smith',55);
insert into osoba values(3, 'paul','psmithski',44);
insert into osoba values(4, 'jakub','kowalski',70);
insert into osoba values(5, 'scott','tiger',70);

commit;

我想使用sqoop导入Hive。我想在Hive中有分区表。这是我的sqoop命令:

-bash-4.1$ sqoop import -Dmapred.job.queue.name=pr  --connect "jdbc:oracle:thin:@localhost:1521/oracle_database" \
--username "user" --password "password" --table osoba --hive-import \
--hive-table pk.pk_osoba --delete-target-dir --hive-overwrite \
--hive-partition-key nazwisko

我收到错误:

FAILED: SemanticException [Error 10035]: Column repeated in partitioning columns

有人可以建议如何使用--hive-partition-key参数吗? 没有--hive-partition-key参数的Sqoop命令工作正常,并在Hive中创建表pk.pk_osoba。

此致

的Pawel

1 个答案:

答案 0 :(得分:2)

在“列”选项中,提供除分区列以外要导入的所有列名称。我们不会在--columns选项中指定分区列,因为它会自动添加。

以下是示例: 我正在使用列ID,NAME,COUNTRY导入DEMO2表。我没有在--columns选项中指定COUNTRY列名,因为它是我的分区列名。

 $SQOOP_HOME/bin/sqoop import --connect jdbc:oracle:thin:@192.168.41.67:1521/orcl --username orcluser1 --password impetus --hive-import --table DEMO2 --hive-table "DEMO2" --columns ID,NAME --hive-partition-key 'COUNTRY' --hive-partition-value 'INDIA' --m 1 --verbose --delete-target-dir --target-dir /tmp/13/DEMO2