我正在使用cloudera快速入门版CDH 5.7
我在终端窗口上使用了以下查询:
sqoop import \
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" \
--username=retail_dba \
--password=cloudera \
--query="select * from orders join order_items on orders.order_id = order_items.order_item_order_id where \$CONDITIONS" \
--target-dir /user/cloudera/order_join \
--split-by order_id \
--num-mappers 4
问:美元条件的目的是什么?为什么在这个查询中使用?谁能给我解释一下。
最佳答案
sqoop内部使用$CONDITIONS
来修改查询,以实现任务拆分和获取元数据。
要获取元数据,sqoop将\$CONDITIONS
替换为1=0
select * from table where 1 = 0
要获取所有数据(1个映射器),sqoop将
\$CONDITIONS
替换为1=1select * from table where 1 = 1
在多个映射器的情况下,sqoop使用范围查询替换
\$CONDITIONS
,以从RDBMS中获取数据子集。例如,
id
介于1到100之间,我们使用4个映射器。Select * From table WHERE id >= 1' AND 'id < 25
Select * From table WHERE id >= 25' AND 'id < 50
Select * From table WHERE id >= 50' AND 'id < 75
Select * From table WHERE id >= 75' AND 'id <= 100
关于mysql - --query下$ CONDITIONS的作用是什么?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42330986/