2016-04-19 5 views
0

Есть ли способ использовать sqoop для инкрементного экспорта? Я использую интеграцию Hcatalog для sqoop.I пробовал использовать параметры -last-value, --check-column, которые используются для инкрементного импорта, но sqoop дал мне ошибку, что параметры были недействительными.Инкрементный экспорт Sqoop с использованием hcatalog?

ответ

1

Я не видел дополнительных аргументов экспорта 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.

+0

Работает ли sqoop для обновления строк в экспорте? Из new_export_table1, если я запустил sqoop, обновит ли он старые строки? – VoodooChild

+0

@VoodooChild Да, если ваша таблица export_table1 в Hive имеет уникальное поле, и одно и то же поле является первичным ключом в конечной таблице, тогда ** sqoop ** должен обновлять соответствующие поля. См. Https://sqoop.apache.org/docs/1.4.2/SqoopUserGuide.html#_inserts_vs_updates. – gkc123

0

По умолчанию sqoop не поддерживает постепенное обновление с интеграцией hcatalog, когда мы пытаемся это дает следующее сообщение об ошибке

режим Append для импорта не совместим с HCatalog. Пожалуйста, удалите параметр - присоединять-режим в org.apache.sqoop.tool.BaseSqoopTool.validateHCatalogOptions (BaseSqoopTool.java:1561)

вы можете использовать параметр запроса, чтобы заставить его работать. как описано в this hortonworks document

 Смежные вопросы

  • Нет связанных вопросов^_^