sqoop для импорта данных в улей

Я пытаюсь импортировать данные в таблицу улья, используя sqoop2. я использую --hive-import Но это не работает

Код:

sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table xxxx.NOTIFICATION --hive-import

Ошибка:

ОШИБКА manager.SqlManager: Ошибка при выполнении оператора: com.microsoft.sqlserver.jdbc.SQLServerException: Неверное имя объекта "XXXX.NOTIFICATION".

Что я делаю неправильно?

3 ответа

Решение

Привет после небольшого исследования и обсуждения вопроса с @dev, я нашел решение.

Я использую sqoop2, поэтому я изменил свою команду и использовал ниже один, и это сработало для меня.

$ sqoop import --connect "jdbc:sqlserver://192.168.x.xxx:11xx;database=SSSS;username=user;password=user" --query "SELECT * FROM xxxx.NOTIFICATION where \$CONDITIONS" --split-by xxxx.NOTIFICATION.ID --hive-import --hive-table NOTIFICATION  --target-dir NOTIFICATION 

перед выполнением этой команды мы должны создать таблицу в улье, используя create команда. Здесь я создал таблицу улья с именем NOTIFICATION,

Ниже приведены наблюдения на основе Sqoop 1.4.6.

вы используете (точка) в названии вашей таблицы.

Внутри Sqoop будет запускать команду

SELECT t.* FROM xxxx.NOTIFICATION AS t WHERE 1=0

чтобы получить метаданные вашей таблицы SQL Server.

Эта команда интерпретируется как

  • хххх - имя шаме
  • УВЕДОМЛЕНИЕ - Название таблицы

Чтобы избежать этого, вы можете использовать escape-символ ([] в случае SQL Server):

sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx --username user --password user --table [xxxx.NOTIFICATION] --hive-import

Это сгенерирует

SELECT t.* FROM [xxxx.NOTIFICATION] AS t WHERE 1=0

Сейчас xxxx.NOTIFICATION будет рассматриваться как имя таблицы.

Я предполагаю, что именем таблицы является NOTIFICATION, и вы пытаетесь указать имя базы данных xxxx, когда пишете --table xxxx.NOTIFICATION

Если это так, можете ли вы попробовать использовать приведенный ниже синтаксис?

sqoop import --connect jdbc:sqlserver://192.168.x.xxx:11xx;databaseName=xxxx --username user --password user --table NOTIFICATION --hive-import
Другие вопросы по тегам