Hadoop sqoop导入已完成,但配置单元显示表无法查看表

Hadoop sqoop导入已完成,但配置单元显示表无法查看表,hadoop,hive,hdfs,sqoop,Hadoop,Hive,Hdfs,Sqoop,安装hadoop后,将执行HiveCDH版本I ./sqoop import -connect jdbc:mysql://10.164.11.204/server -username root -password password -table user -hive-import --hive-home /opt/hive/ 一切都很顺利,但当我进入配置单元命令行并执行ShowTables时,什么都没有。 我使用./hadoop fs-ls,我可以看到/user/username/user存在

安装hadoop后,将执行HiveCDH版本I

./sqoop import -connect jdbc:mysql://10.164.11.204/server -username root -password password -table user -hive-import --hive-home /opt/hive/
一切都很顺利,但当我进入配置单元命令行并执行ShowTables时,什么都没有。 我使用./hadoop fs-ls,我可以看到/user/username/user存在

感谢您的帮助

--编辑------

/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)

在我的例子中,Hive将数据存储在HDFS中的/user/Hive/warehouse目录中。这是Sqoop应该放的地方

所以我想你必须补充:

--target-dir /user/hive/warehouse
配置单元表的默认位置在您的情况下可能不同

您可能还希望在配置单元中创建此表:

sqoop create-hive-table --connect jdbc:mysql://host/database --table tableName --username user --password password

在我的例子中,Hive将数据存储在HDFS中的/user/Hive/warehouse目录中。这是Sqoop应该放的地方

所以我想你必须补充:

--target-dir /user/hive/warehouse
配置单元表的默认位置在您的情况下可能不同

您可能还希望在配置单元中创建此表:

sqoop create-hive-table --connect jdbc:mysql://host/database --table tableName --username user --password password

配置单元表将由Sqoop导入过程创建。请确保在HDFS中创建了/user/hive/warehouse。您可以浏览HDFShttp://localhost:50070/dfshealth.jsp -浏览文件系统选项


在sqoop导入命令中还包括HDFS local in-target dir,即HDFS://:9000/user/hive/warehouse。

将通过sqoop导入过程创建hive表。请确保在HDFS中创建了/user/hive/warehouse。您可以浏览HDFShttp://localhost:50070/dfshealth.jsp -浏览文件系统选项

在sqoop导入命令中还包括HDFS local in-target dir,即HDFS://:9000/user/hive/warehouse。

首先,在hive中创建表定义,使用与mysql中相同的字段名和类型

然后,执行导入操作

用于蜂箱导入

“id”可以是现有表的主键 “localhost”可以是您的本地ip “测试”是数据库 “仓库”目录位于HDFS中 首先,在配置单元中使用与mysql中相同的字段名和类型创建表定义

然后,执行导入操作

用于蜂箱导入

“id”可以是现有表的主键 “localhost”可以是您的本地ip “测试”是数据库 “仓库”目录位于HDFS中
检查您的hive-site.xml以获取属性的值 javax.jdo.option.ConnectionURL。如果您没有明确定义它, 默认值将使用相对路径创建配置单元 MetastoreJDBC:derby:;databaseName=metastore_db;create=true哪个 将根据您启动流程的位置而有所不同。 这将解释为什么您无法通过show tables查看该表

在数据库中定义此属性值
使用绝对路径检查hive-site.xml以获取属性值 javax.jdo.option.ConnectionURL。如果您没有明确定义它, 默认值将使用相对路径创建配置单元 MetastoreJDBC:derby:;databaseName=metastore_db;create=true哪个 将根据您启动流程的位置而有所不同。 这将解释为什么您无法通过show tables查看该表

在数据库中定义此属性值
hive-site.xml使用绝对路径

无需在配置单元中创建表。请参阅下面的查询

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'

无需在配置单元中创建表。请参阅下面的查询

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'

在我的例子中,它在配置单元默认数据库中创建表,您可以尝试一下


sqoop导入-连接jdbc:mysql://xxxx.com/Database name-username root-password admin-table name-配置单元导入-warehouse dir dir-创建配置单元表-配置单元表名称-m 1在我的例子中,它在配置单元默认数据库中创建表,您可以尝试一下


sqoop导入-连接jdbc:mysql://xxxx.com/Database name-username root-password admin-table name-hive import-warehouse dir-dir-create hive table-hive table name-m1我想您所需要的就是指定数据应该放在哪里的hive表。
将-hive table database.tablename添加到sqoop命令并删除-hive home/opt/hive/。我认为这应该可以解决问题。

我认为您所需要的只是指定数据应该放在哪里的配置单元表。
将-hive table database.tablename添加到sqoop命令并删除-hive home/opt/hive/。我认为这应该可以解决问题。

谢谢wojtek,你的意思是我应该在配置单元导入之前创建配置单元表吗?即使我使用“创建配置单元表”,我仍然无法通过“显示表”命令查看表。@elprup-不,您只需创建一次-第一次导入数据时。但可能存在自动创建配置单元表的导入选项。谢谢wojtek,您的意思是我应该在配置单元导入之前始终创建配置单元表吗?即使使用“创建配置单元表”,我仍然无法通过“显示表”命令查看表。@elprup-不,您只需创建一次-第一次导入数据时。但是可能会有导入选项自动创建它。您正在运行哪个版本的Sqoop和Hadoop?您正在运行哪个版本的Sqoop和Hadoop?我想您是对的。
我遇到了同样的问题。我发现我可以根据我启动hive的位置找到表。GettingStart说元数据位于嵌入式Derby数据库中,其磁盘存储位置由名为javax.jdo.option.ConnectionURL的配置变量确定。默认情况下,请参见conf/hive-default.xml,此位置为./metastore\u db。因此,请确保在启动Sqoop的相同位置启动蜂箱。然后你会找到你的桌子。我想你是对的。我遇到了同样的问题。我发现我可以根据我启动hive的位置找到表。GettingStart说元数据位于嵌入式Derby数据库中,其磁盘存储位置由名为javax.jdo.option.ConnectionURL的配置变量确定。默认情况下,请参见conf/hive-default.xml,此位置为./metastore\u db。因此,请确保在启动Sqoop的相同位置启动蜂箱。然后你会找到你的桌子。