什么是-m 1的相关性

时间:2017-03-14 12:05:34

标签: hadoop hive sqoop

我正在执行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命令将文件保存为文本文件格式。但是当我转到执行建议的位置时,我找到了tbl_name.jar。为什么,如果--as-textfile是一个错误的sytax,那么什么是正确的。或者是否有其他位置可以找到该文件?

1 个答案:

答案 0 :(得分:0)

1)要将-m--num-mappers设置为大于1的值,该表必须为PRIMARY KEYsqoop命令必须与--split-by列一起提供。 Controlling Parallelism将解释这背后的逻辑。

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