我无法通过sqoop将表从我的sql server导入到hive

时间:2012-07-31 19:23:17

标签: hadoop hive cloudera sqoop

当我通过命令时:

$ sqoop create-hive-table --connect'jdbc:sqlserver://10.100.0.18:1433; username = cloud; password = cloud123; database = hadoop'-table cluster

出现一些错误和警告,最后说, 无法启动数据库'/ var / lib / hive / metastore / metastore_db',请参阅下一个例外以获取详细信息[再次显示导入错误列表]

最后它说hive退出了satus 9

这是什么问题?我是sqoop和hive的新手。请有人帮助我。

5 个答案:

答案 0 :(得分:1)

正确的语法是

sqoop import --connect' jdbc:sqlserver://10.100.0.18:1433 / hadoop' --username cloud --password cloud123 --table cluster --hive-import

答案 1 :(得分:0)

我想您可能想检查您是否对指定目录具有写权限,以及是否正在创建名为metastore_db的目录

答案 2 :(得分:0)

当您使用默认Hive配置运行Sqoop时,通常会显示此消息。默认情况下,Hive将使用derby数据存储区,该数据存储区仅在非常基本的测试用例中可用。我建议重新配置你的hive实例,使用其他一些关系数据库作为数据存储后端(MySQL,PostgreSQL,Oracle)。

答案 3 :(得分:0)

你的语法都错了。语法是$ sqoop tool-name [tool-arguments]

  

$ sqoop import --create-hive-table --connect'jdbc:sqlserver://10.100.0.18:1433 / hadoop'--username cloud --password cloud123 --table cluster

答案 4 :(得分:0)

使用sqoop粘贴蜂巢导入的示例调用。这可以帮助您进一步纠正语法。请记住,从本质上讲,您至少需要给出以下命令才能使其正常工作。

sqoop import --connect jdbc:mysql://localhost/RAWDATA --table geolocation --username root --password hadoop  --hive-import  --create-hive-table --driver com.mysql.jdbc.Driver --m 1 --delete-target-dir
  1. -connect ,在该部分中,读取/ RAWDATA 的部分是您的mysql实例中包含地理位置表的数据库名称。您可以在mysql中执行“显示数据库”和“显示表”命令,以检查数据库和表。
  2. -delete-target-dir 选项用于安全。它将确保sqoop在将其移入配置单元之前删除它创建的写入文件的tmp目录。这样可以避免在目录中存在不必要的错误,以防您重试该命令。
  3. 仅当您尚未在hive中创建目标表时,才需要
  4. -create-hive-table 。如果先前的sqoop命令运行已经创建了该表,则可以完全忽略此选项。检查您的配置单元数据库中是否存在目标配置单元表。
  5. -驱动程序是执行任何数据库连接的命令的必需部分。请确保找到驱动程序库的正确路径或尝试使用Google搜索选项。您可以先尝试上面粘贴的内容,看看它是否能解决问题。您可以返回此论坛寻求帮助。
  6. 请记住,我们没有提及将在该配置单元中创建哪个数据库的表,因此该表将位于配置单元的默认数据库中。我没有提供该选项,因为您只是要从sqoop开始。