FAQ-sqoop --columns参数说明

sqoop会使用–columns去匹配列

Sqoop的export的执行思路为:

将HDFS文件按照指定的分隔符进行分隔 拼接insert into tableName (columna, columnb, ...) values (HDFS分隔的结果) 举例来说,如果HDFS文件是:

1,aaron,100

2,coco,200

mysql表test结构是:

em_id,em_name,em_salary 3个字段

这时候sqoop会拼接成:

insert into test (em_id,em_name,em_salary) values (1,'aaron',100),(2,'coco',200);

注意这里的列名是数据库中的列不是hive中的

DDB或者MySQL中首字段是自增id

按照上面的示例,如果MySQL表字段为id, em_id, em_name, em_salary,此时sqoop拼接的默认SQL是:insert into test (id, em_id, em_name, em_salary) values (1,'aaron',100),(2,'coco',200); 这时候MySQL就报错了。

此时可以通过–columns 来解决,–columns "em_id,em_name,em_salary" 这样指定后,就会替换insert into test 后面的字段,变成insert into test (em_id,em_name,em_salary) values (1,'aaron',100),(2,'coco',200);

问题排查

在更多参数中添加参数 - -verbose FAQ-sqoop --columns参数说明 - 图1 FAQ-sqoop --columns参数说明 - 图2 FAQ-sqoop --columns参数说明 - 图3