我想" import-all-tables"使用从mysql的sqoop到Hive自定义数据库(非Hive默认数据库)
尝试了一些步骤:
在命令下方使用选项" - hive-database" CDH5.7 VM上的选项:
sqoop import-all-tables
--connect "jdbc:mysql://quickstart.cloudera:3306/retail_db"
--username retail_dba
--password cloudera
--hive-database "/user/hive/warehouse/sqoop_import_retail.db"
仅在配置单元default
数据库中创建的表,而不是在这种情况下在自定义数据库中创建:" sqoop_import_retail.db
"
此外,它试图在之前的HDFS目录(/user/cloudera/categories
)中创建表,并且错误输出表已经存在:
16/08/30 00:07:14 WARN security.UserGroupInformation: PriviledgedActionException as:cloudera (auth:SIMPLE) cause:org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/categories already exists
16/08/30 00:07:14 ERROR tool.ImportAllTablesTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/categories already exists
[cloudera@quickstart etc]$
如何解决这个问题?
1.在配置单元自定义数据库中创建表格
2.使用Sqoop刷新以前的目录引用。
答案 0 :(得分:0)
您未在命令中提及--hive-import
。因此,在您的情况下,它会将其导入到/user/cloudera/
下的HDFS。
您再次查询问题。这就是获得Exception的原因
Output directory hdfs://quickstart.cloudera:8020/user/cloudera/categories already exists
修改导入命令:
sqoop import-all-tables --connect "jdbc:mysql://quickstart.cloudera:3306/retail_db" --username retail_dba --password cloudera --hive-database custom --hive-import
它将从MySQL的retail_db
获取所有表,并在hive中为custom
数据库创建相应的表。