【问题标题】:What is the purpose of $CONDITIONS under --query?--query 下的 $CONDITIONS 的目的是什么?
【发布时间】:2017-02-20 03:40:16
【问题描述】:

我正在使用 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 的目的是什么?为什么在这个查询中使用?谁能给我解释一下。

【问题讨论】:

标签: mysql sqoop


【解决方案1】:

$CONDITIONS被sqoop内部用来修改查询,实现任务拆分和获取元数据。

为了获取元数据,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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-08
    • 2014-01-23
    • 2016-10-15
    • 1970-01-01
    • 2019-01-02
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    相关资源
    最近更新 更多