-m 1 的相关性是什么

what is the relevence of -m 1

我正在执行以下 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) -m 1 的相关性是什么?据我所知,这是我分配给 sqoop 作业的映射器的数量。如果那是真的,那么,当我分配 -m 2 时,执行开始抛出如下错误:

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命令将文件保存为文本文件format.But,当我转到执行建议的位置时,我发现tbl_name.jar。为什么,如果 --as-textfile 是错误的语法,那么正确的语法是什么。或者我可以在其他位置找到该文件吗?

1) 要将 -m--num-mappers 设置为大于 1 的值,table必须具有 PRIMARY KEYsqoop 命令必须带有 --split-by 列。 Controlling Parallelism 会解释这背后的逻辑。

2) 导入 Hive table amit_hive_test 的数据的文件格式将是纯文本 (--as-textfile)。由于这是 --hive-import,数据将首先导入到 --target-dir,然后加载(LOAD DATA INPATH)到 Hive table。结果数据将在 table 的 LOCATION 中,而不是在 --target-dir.