m1的关系是什么

pvabu6sv  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(338)

我正在执行以下sqoop命令:=

sqoop import --connect 'jdbc:sqlserver://10.xxx.xxx.xx:1435;database=RRAM_Temp' --username DRRM_DATALOADER --password******--table T_VND --hive-import --hive-table amitesh_db.amit_hive_test --as-textfile --target-dir amitesh_test_hive -m 1

我有两个问题:-
1) 与-m1有什么关系?据我所知,这是我分配给sqoop工作的Map器的数量。如果这是真的,那么在我分配-m2的那一刻,执行开始抛出如下错误:

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

现在,我不得不改变我的观念,现在我明白了,这和数据库主键有关。有人能帮我解释一下背后的逻辑吗?
2) 我已经命令上面的sqoop命令将文件保存为文本文件格式。但是当我转到执行建议的位置时,我发现tbl_name.jar。为什么,如果文本文件是一个错误的sytax,那么什么是正确的。或者有没有其他我能找到文件的地方?

r6vfmomb

r6vfmomb1#

1) 拥有 -m 或者 --num-mappers 设置为大于 1 ,表必须具有 PRIMARY KEY 或者 sqoop 必须为命令提供 --split-by 列。控制并行性可以解释这背后的逻辑。
2) 导入配置单元表的数据的文件格式 amit_hive_test 将是纯文本( --as-textfile ). 就这样 --hive-import ,数据将首先导入 --target-dir 然后加载( LOAD DATA INPATH )放进 hive 的table里。结果数据将在表的 LOCATION 而不是在 --target-dir .

相关问题