-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 KEY
或 sqoop
命令必须带有 --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
.
中
我正在执行以下 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 KEY
或 sqoop
命令必须带有 --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
.