2014-10-14 5 views
1

Я пытаюсь импортировать данные из Oracle в Hive, используя sqoop.
Я использовал команду ниже один раз, теперь я хочу перезаписать существующие данные новыми данными (Daily Action).
Я снова запустил эту команду.Hive External Table

sqoop import --connect jdbc:oracle:thin:@UK01WRS6014:2184:WWSYOIT1 
--username HIVE --password hive --table OIDS.ALLOCATION_SESSION_DIMN 
--hive-overwrite --hive-database OI_DB --hive-table ALLOCATION_SESSION_DIMN 

Но я получаю сообщение об ошибке Файл уже существует:

14/10/14 07:43:59 ERROR security.UserGroupInformation: 
PriviledgedActionException as:axchat 
(auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException: 
Output directory 
hdfs://uslibeiadg004.aceina.com:8020/user/axchat/OIDS.ALLOCATION_SESSION_DIMN 
already exists 

Таблицы, которые я создал в улье были все внешние таблицы. Как mapreduce, нужно ли нам удалять этот файл каждый раз, когда мы выполняем ту же команду?

Любая помощь будет высоко оценена.

ответ

1

Когда вы удаляете из таблицы EXTERNAL, вы удаляете объекты в метастаре улья: вы не удаляете файлы, над которыми наложен этот стол. Не внешняя таблица принадлежит Soley для Hive и при ее удалении приведет к метасторе - AND Удаление HDFS-данных.

Вы можете либо попытаться удалить данные HDFS явно, либо определить, что таблица является внутренней для улья.

+0

в моем случае, так как я создал внешнюю структуру таблицы в улье, а затем sqoop-импорт данных в эти внешние таблицы с использованием -hive-overwrite. Я не знаю, почему я получаю ошибку FileAlreadyExists. он не должен давать ошибку, так как im переписывает ее. я прав ? – aiman

+1

У вас есть перехват улья, но не hdfs перезаписать. – davek

+0

@devek - если я удаляю эти внешние таблицы, воссоздаю управляемые таблицы, n импортирует данные, он будет загружаться штрафом. снова, если я импортирую данные, используя -hive-overwrite, я не должен получать ошибку FileAlreadyExists. я прав ? – aiman

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