Import RDBMS中无主键的Sqoop导入

Import RDBMS中无主键的Sqoop导入,import,sqoop,Import,Sqoop,我可以使用sqoop将RDBMS表数据(表没有主键)导入到配置单元吗?如果是,那么请给出sqoop导入命令 我已尝试使用sqoop import常规命令,但失败。如果您的表没有定义主键,则必须为导入数据提供-m1选项,或者必须提供--split by参数和某个列名,否则会出现错误: ERROR tool.ImportTool: Error during import: No primary key could be found for table <table_name>. Plea

我可以使用sqoop将RDBMS表数据(表没有主键)导入到配置单元吗?如果是,那么请给出sqoop导入命令


我已尝试使用sqoop import常规命令,但失败。

如果您的表没有定义主键,则必须为导入数据提供
-m1
选项,或者必须提供
--split by
参数和某个列名,否则会出现错误:

ERROR tool.ImportTool: Error during import: No primary key could be found for table <table_name>. Please specify one with --split-by or perform a sequential import with '-m 1'


在第一个场景中,使用1个映射器。。。如果文件的大小非常大,这个过程将需要更多的时间来响应,或者可能会失败。在使用mapper=1之前检查数据的大小

您可以将数据从RDBMS导入到配置单元,而无需Primarykey

首先,您需要在配置单元中创建一个表。然后,您需要编写以下代码:

sqoop import \
    --connect jdbc:mysql://localhost/test_db \
    --username root \
    --password **** \
    --table <RDBMS-Table-name> \
    --target-dir /user/root/user_data \
    --hive-import \ 
    --hive-table <hive-table-name> \
    --create-hive-table \
    -m 1 (or) --split-by <RDBMS-Column>
sqoop导入\
--连接jdbc:mysql://localhost/test_db \
--用户名根\
--密码****\
--桌子\
--目标目录/用户/根目录/用户\u数据\
--蜂巢导入\
--蜂箱台\
--创建配置单元表\
-m 1(或)--除以
快速查看:

Sqoop作业失败,错误看起来像“导入期间的错误:找不到表的主键。请使用--split by指定一个,或使用'-m1'执行顺序导入” 说明: 通常,在内部执行Sqoop作业时,它会在表中搜索主键。如果没有主键,Sqoop作业将失败,错误如下“导入期间出错:找不到表的主键。请使用--split by指定主键,或使用“-m 1”执行顺序导入。该建议描述了此场景的两种替代方法

最好的办法是选择2

  • 将映射器的数量指定为1(默认值为4)。因此,通过将映射器的数量指定为1,任务将是连续的,并且与单线程任务相同。只有当您的目标是一个小表时,如果您正在寻找一个大的导入,这将失败,因为任务往往会永远运行

  • 最好的方法是使用splitbywhere,您可以根据索引列或手动拆分列(带查询)指定映射器的数量


  • 在命令中使用以下命令:

    --autoreset-to-one-mapper
    
    Import
    如果表没有主键且未提供按列拆分,则应使用一个映射器。它不能与
    --按
    拆分选项一起使用

    sqoop import \
        --connect jdbc:mysql://localhost/test_db \
        --username root \
        --password **** \
        --table <RDBMS-Table-name> \
        --target-dir /user/root/user_data \
        --hive-import \ 
        --hive-table <hive-table-name> \
        --create-hive-table \
        -m 1 (or) --split-by <RDBMS-Column>
    
    --autoreset-to-one-mapper