Есть ли способ использовать sqoop для инкрементного экспорта? Я использую интеграцию Hcatalog для sqoop.I пробовал использовать параметры -last-value, --check-column, которые используются для инкрементного импорта, но sqoop дал мне ошибку, что параметры были недействительными.Инкрементный экспорт Sqoop с использованием hcatalog?
ответ
Я не видел дополнительных аргументов экспорта sqoop. Другой способ, которым вы могли бы попробовать, - создать contol_table в улье, где вы сохраняете журнал имени таблицы & timestamp, когда он был последним экспортирован каждый раз.
create table if not exists control_table (
table_name string,
export_date timestamp
);
insert into control_table 'export_table1' as table_name, from_unixtime(unix_timestamp()) as export_date from control_table;
Если export_table1 это таблица, которую нужно экспортировать постепенно и при условии, если уже выполнили выше двух заявлений.
--execute below at once
--get the timestamp when the table was last executed
create temporary table control_table_now as select table_name, max(export_date) as last_export_date from control_table group by table_name;
--get incremental rows
create table new_export_table1 as select field1, field2, field3, .... timestamp1 from export_table1 e, control_table_now c where c.table_name = 'export_table1' and e.timestamp1 >= c.last_export_date;
--append the control_table for next process
insert into control_table 'export_table1' as table_name, from_unixtime(unix_timestamp()) as export_date from control_table;
Теперь экспортируйте таблицу new_export_table1, которая создается поэтапно с использованием команды экспорта sqoop.
По умолчанию sqoop не поддерживает постепенное обновление с интеграцией hcatalog, когда мы пытаемся это дает следующее сообщение об ошибке
режим Append для импорта не совместим с HCatalog. Пожалуйста, удалите параметр - присоединять-режим в org.apache.sqoop.tool.BaseSqoopTool.validateHCatalogOptions (BaseSqoopTool.java:1561)
вы можете использовать параметр запроса, чтобы заставить его работать. как описано в this hortonworks document
Работает ли sqoop для обновления строк в экспорте? Из new_export_table1, если я запустил sqoop, обновит ли он старые строки? – VoodooChild
@VoodooChild Да, если ваша таблица export_table1 в Hive имеет уникальное поле, и одно и то же поле является первичным ключом в конечной таблице, тогда ** sqoop ** должен обновлять соответствующие поля. См. Https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_inserts_vs_updates. – gkc123