我尝试使用sqoop --where标志将MySQL表中的特定行导入HDFS,但结果并不像预期的那样。
命令:
sqoop import \
--connect "jdbc:mysql://XXXX.YYYY/XXXX/retail_db" \
--username XXXX \
--password XXXX \
--query "select * from departments where \$CONDITIONS \
--where "department_id < 5" \
--target-dir /XXX/YYY/departments \
--split-by department_id
MySQL表格行
department_id department_name
------------- ---------------
2 Fitness
3 Footwear
4 Apparel
5 Golf
6 Outdoors
7 Fanshop
8000 Test
运行命令后,理想情况下,预期输出应该是具有department_ids 2,3和4的前3行,而是导入所有行。有人可以解释一下吗?
答案 0 :(得分:0)
Sqoop不知道WHERE标志。
将您的查询更改为
--query "select * from departments where \$CONDITIONS \
department_id < 5 \
AND \$CONDITIONS" \
并删除该行
--where "department_id < 5" \
查询应该可以正常工作。