【问题标题】:Import data from oracle into hive using sqoop - cannot use --hive-partition-key使用 sqoop 将数据从 oracle 导入 hive - 不能使用 --hive-partition-key
【发布时间】:2015-05-06 08:14:51
【问题描述】:

我有一张简单的桌子:

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。

问候

帕维尔

【问题讨论】:

    标签: oracle hadoop hive sqoop


    【解决方案1】:

    在列选项中提供您要导入的所有列名称,除了分区列。我们没有在 --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
    

    【讨论】:

    • 我认为是只导入印度数据。如果我想将所有数据导入 hive 分区表怎么办。 (在 hive 中启用了动态分区)?
    猜你喜欢
    • 2016-03-17
    • 1970-01-01
    • 2023-03-13
    • 2021-02-27
    • 1970-01-01
    • 2018-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多