【发布时间】:2016-08-30 17:24:41
【问题描述】:
我想使用 sqoop 从 mysql “导入所有表”到 Hive 自定义数据库(不是 Hive 默认数据库)
尝试的步骤:
- 在“/user/hive/warehouse/Custom.db”下的 hive 中创建自定义数据库
- 为此目录分配了所有权限,因此 sqoop 在写入此目录时不会出现任何问题。
-
在 CDH5.7 VM 上使用带有选项“--hive-database”选项的命令:
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"
仅在 hive 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.在hive自定义DB中创建表
2. 使用 Sqoop 刷新以前的目录引用。
【问题讨论】:
标签: sqoop