安装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/
一切顺利,但是当我进入hive命令行并执行show tables时,什么都没有。 我使用./hadoop fs -ls,我可以看到/ 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)
答案 0 :(得分:3)
检查您的hive-site.xml以获取该属性的值 javax.jdo.option.ConnectionURL。如果没有明确定义, 默认值将使用相对路径来创建配置单元 metastore(jdbc:derby :; databaseName = metastore_db; create = true) 将根据您启动流程的位置而有所不同。 这可以解释为什么你不能通过show tables看到这个表。
在您的中定义此属性值 使用绝对路径的hive-site.xml
答案 1 :(得分:2)
无需在hive中创建表..请参阅以下查询
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'
答案 2 :(得分:1)
在我的案例中,Hive将数据存储在HDFS的/user/hive/warehouse
目录中。这是Sqoop应该放的地方。
所以我想你必须添加:
--target-dir /user/hive/warehouse
哪个是Hive表的默认位置(在您的情况下可能会有所不同)。
您可能还想在Hive中创建此表:
sqoop create-hive-table --connect jdbc:mysql://host/database --table tableName --username user --password password
答案 3 :(得分:0)
Hive表将由Sqoop导入过程创建。请确保在您的HDFS中创建/ user / hive / warehouse。您可以浏览HDFS(http:// localhost:50070 / dfshealth.jsp - 浏览文件系统选项。
在sqoop import命令中还包括HDFS local -target dir,即hdfs://:9000 / user / hive / warehouse。
答案 4 :(得分:0)
首先,在Hive中创建表定义,其中包含与mysql中的确切字段名称和类型。
然后,执行导入操作
适用于Hive导入
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
答案 5 :(得分:0)
在我的情况下,它在hive默认数据库中创建表,你可以尝试一下。
sqoop import --connect jdbc:mysql://xxxx.com/Database name --username root --password admin --table NAME --hive-import --warehouse-dir DIR --create-hive-table --hive-table NAME -m 1
答案 6 :(得分:0)
我认为你需要的只是指定数据应该去的hive表。
将"--hive-table database.tablename"
添加到sqoop命令并删除--hive-home /opt/hive/
。我认为应该解决问题。