Я не совсем понял ваши вопросы, но позвольте мне попытаться ответить. Дайте мне знать, если вы ищете что-то еще.
1- Почему рекомендуется использовать параметр в предложении Where подкоманды «query»
SQOOP импортирует данные параллельно из RDBMS. Вы можете указать нет задач карты (параллельный процесс), которые будут использоваться для выполнения импорта, используя аргумент -m
или --num-mappers
. По умолчанию SQOOP будет использовать 4 задания карты.
Например, если у вас есть таблица со столбцом первичного ключа order_id
, минимальное значение которого равно 0, а максимальное значение равно 1000, и SQOOP было направлено на использование 4 задач, SQOOP будет запускать четыре процесса, каждый из которых выполняет операторы SQL. формы
SELECT * FROM orders WHERE $CONDITIONS
Теперь заполнитель $ CONDITIONS будет заменен, как показано ниже
для задания карты 1: order_id >= 0 and order_id < 250
и окончательный SQL будет выглядеть как
SELECT * FROM ордеров, ГДЕ order_id> = 0 и order_id <250 </p>
для задания карты 2: order_id >= 250 and order_id < 500
и окончательный SQL будет выглядеть как
SELECT * FROM ордеров, ГДЕ order_id> = 250 и order_id <500 </p>
для задания карты 3: order_id >= 500 and order_id < 750
и окончательный SQL будет выглядеть как
SELECT * FROM заказов, ГДЕ order_id> = 500 и order_id <750 </p>
для задания карты 4: order_id >= 750 and order_id < 1001
и окончательный SQL будет выглядеть как
SELECT * FROM ордеров, ГДЕ order_id> = 750 и order_id <1001 </p>
Как видите, $ CONDITIONS - это заполнитель, который SQOOP будет искать и заменять сгенерированными значениями. Обратите внимание, что указание $ CONDITIONS является обязательным, если ни одно из заданий на карте не превышает 1.
2- Что произойдет, если у нас действительно есть предложение WHERE в параметре, который мы хотим использовать в подкоманде «query», а не в подкоманде «where»?
Вы можете просто указать свой критерий фильтра после $ CONDITIONS с префиксом AND
.
Например, если вы хотите загружать только те заказы, у которых сумма заказа превышает 100.
query = "select * из заказов присоединяется к order_items на orders.order_id = order_items.order_item_order_id где \ $ CONDITIONS AND order_amount> 100"
Надеюсь, это прояснится!