我正在使用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
问:$ CONDITIONS的目的是什么?为什么在此查询中使用?任何人都可以向我解释。
答案 0 :(得分:1)
$CONDITIONS
修改查询以实现任务拆分和获取元数据。
要获取元数据,sqoop会将\$CONDITIONS
替换为1 = 0
select * from table where 1 = 0
要获取所有数据(1个映射器),sqoop将\$CONDITIONS
替换为1 = 1
select * 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