2016-07-12 1 views
0

Я пытаюсь импортировать данные из базы данных SQL-сервера в Hive. В основном я импортирую всю базу данных (кроме некоторых таблиц) в Hive. Здесь у меня есть некоторые вопросы, на которые я не мог получить ответ нигде.Импорт данных из СУРБД с использованием SQOOP

  1. Можем ли мы использовать «-hive-import» с помощью «import-all-tables» и «-exclude-tables». ? Если нет, как только я загружу все таблицы в hfds, как мне использовать параметр create external table для создания метаданных для всех таблиц?
  2. Можем ли мы указать имя базы данных улья где угодно в команде импорта sqoop. ?

Спасибо.

ответ

0

Относительно ваших вопросов.

  1. No. Как упомянуто в документе Apache: «--exclude-таблицы аргумент для + только sqoop-импорт-всех столов». Ниже документ от Apache (Поиск котировки». https://sqoop.apache.org/docs/1.4.4/SqoopUserGuide.html#_syntax.

2.Yes. Вот пример.

import-all-tables --connect ${connectString} --username ${username} -- password ${password} --hive-home /opt/hive --hive-database ${database} -- verbose --hive-import --hive-drop-import-delims -m 1 
+0

Спасибо. Итак, в этом случае, как только я загружаю таблицы в hdfs, как мне создать внешнюю таблицу для нескольких файлов уже в hdfs? –

+0

Я думаю, вы можете использовать import-all-tables с «--exclude-tables», указать «-hive-database». Все таблицы будут созданы автоматически в Hive. Если вы не используете «-hive-import», вам необходимо создать внешние таблицы вручную. – NangSaigon

0

Для импорта данных внешней таблицы ульи из RDBMS вы должны следовать

1) Создать внешнюю таблицу улья. (должны создать все таблицы). 2) импорт данных с помощью Sqoop. (Это может быть сделано с помощью сценария оболочки)

Подготовьте файл ввода, который имеет список DBNAME.TABLENAME. Сценарий оболочки будет иметь этот файл в качестве входных данных, итерация по очереди и выполнение инструкции sqoop для каждой строки.

while read line; 
do 

    DBNAME=`echo $line | cut -d'.' -f1` 
    tableName=`echo $line | cut -d'.' -f2` 


    sqoop import -Dmapreduce.job.queuename=$QUEUE_NAME --connect '$JDBC_URL;databaseName=$DBNAME;username=$USERNAME;password=$PASSWORD' --table $tableName --target-dir $HIVE_EXTERNAL_TABLE_PATH/$tableName --fields-terminated-by '\001' -m 1 


done<inputFile