импорт sqoop завершен, но таблицы показа кустов не могут видеть таблицу - PullRequest
1 голос
/ 01 июля 2011

После установки hadoop, hive (версия CDH) я выполняю

./sqoop import -connect jdbc:mysql://10.164.11.204/server -username root -password password -table user -hive-import --hive-home /opt/hive/

Все идет хорошо, но когда я вхожу в командную строку куста и выполняю show tables, ничего не происходит Я использую ./hadoop fs -ls, я вижу / user / (имя пользователя) / user существующий.

Любая помощь приветствуется.

--- EDIT -----------

/sqoop import -connect jdbc:mysql://10.164.11.204/server -username root -password password -table user -hive-import --target-dir /user/hive/warehouse

Ошибка импорта из-за:

11/07/02 00:40:00 INFO hive.HiveImport: FAILED: Error in semantic analysis: line 2:17 Invalid Path 'hdfs://hadoop1:9000/user/ubuntu/user': No files matching path hdfs://hadoop1:9000/user/ubuntu/user
11/07/02 00:40:00 ERROR tool.ImportTool: Encountered IOException running import job: java.io.IOException: Hive exited with status 10
        at com.cloudera.sqoop.hive.HiveImport.executeExternalHiveScript(HiveImport.java:326)
        at com.cloudera.sqoop.hive.HiveImport.executeScript(HiveImport.java:276)
        at com.cloudera.sqoop.hive.HiveImport.importTable(HiveImport.java:218)
        at com.cloudera.sqoop.tool.ImportTool.importTable(ImportTool.java:362)
        at com.cloudera.sqoop.tool.ImportTool.run(ImportTool.java:423)
        at com.cloudera.sqoop.Sqoop.run(Sqoop.java:144)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:65)
        at org.apache.hadoop.util.ToolRunner.run(ToolRunner.java:79)
        at com.cloudera.sqoop.Sqoop.runSqoop(Sqoop.java:180)
        at com.cloudera.sqoop.Sqoop.runTool(Sqoop.java:218)
        at com.cloudera.sqoop.Sqoop.main(Sqoop.java:228)

Ответы [ 7 ]

3 голосов
/ 19 февраля 2013

Проверьте ваш hive-site.xml на предмет стоимости имущества javax.jdo.option.ConnectionURL. Если вы не определите это явно, значение по умолчанию будет использовать относительный путь для создания улья metastore (jdbc: derby:; databaseName = metastore_db; create = true), который будет отличаться в зависимости от того, откуда вы запускаете процесс. Это объяснило бы, почему вы не можете увидеть таблицу с помощью show tables.

определите значение этого свойства в вашем hive-site.xml, используя абсолютный путь

2 голосов
/ 03 февраля 2015

нет необходимости создавать таблицу в кусте. См. Запрос ниже

sqoop import --connect jdbc:mysql://xxxx.com/Database name --username root --password admin --table tablename (mysql table) --direct -m 1 --hive-import --create-hive-table --hive-table table name --target-dir '/user/hive/warehouse/Tablename(which u want create in hive)' --fields-terminated-by '\t'
1 голос
/ 01 июля 2011

В моем случае Hive хранит данные в каталоге /user/hive/warehouse в HDFS. Это где Sqoop должен положить его.

Так что я думаю, что вы должны добавить:

--target-dir /user/hive/warehouse

Какое расположение по умолчанию для таблиц Hive (в вашем случае может отличаться).

Возможно, вы также захотите создать эту таблицу в Hive:

sqoop create-hive-table --connect jdbc:mysql://host/database --table tableName --username user --password password
0 голосов
/ 06 мая 2016

Я думаю, все, что вам нужно, это указать таблицу улья, куда должны идти данные. добавьте "--hive-table database.tablename" к команде sqoop и удалите --hive-home /opt/hive/. Я думаю, что это должно решить проблему.

0 голосов
/ 06 мая 2016

в моем случае это создает таблицу в базе данных улья по умолчанию, вы можете попробовать.

sqoop import --connect jdbc: mysql: //xxxx.com/Database name --username root -пароль admin - имя_файла --hive-import --warehouse-dir DIR --create-hive-table --hive-table NAME -m 1

0 голосов
/ 20 января 2012

Прежде всего, создайте определение таблицы в Hive с точными именами и типами полей, как в mysql.

Затем выполните операцию импорта

Для импорта улья

sqoop import --verbose --fields-terminated-by ','  --connect jdbc:mysql://localhost/test --table tablename --hive-import --warehouse-dir /user/hive/warehouse --fields-terminated-by ',' --split-by id --hive-table tablename
  • 'id' может быть вашим первичным ключом существующей таблицы
  • 'localhost' может быть вашим локальным ip
  • 'test' - база данных
  • Каталог 'Хранилище' находится в HDFS
0 голосов
/ 22 июля 2011

Таблицы кустов будут создаваться в процессе импорта Sqoop.Убедитесь, что в вашей HDFS создана папка / user / hive / warehouse.Вы можете просмотреть HDFS (http://localhost:50070/dfshealth.jsp - Просмотреть опцию Файловая система .

Также включить локальный каталог -FS для HDFS, например, hdfs: //: 9000 / user / hive / warehouseв команде импорта sqoop.

...