我希望使用sqoop将所有表从mysql导入到自定义数据库(而不是Hive默认数据库)。
尝试采取的步骤:
仅在hive default数据库中创建的表,而不是在自定义DB中创建的表(本例中为"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]$如何解决这一问题?
发布于 2016-08-30 09:24:41
您的命令中没有提到--hive-import。因此,在您的示例中,它将导入到/user/cloudera/下的HDFS中。
你又在请求宽恕了。所以才会有例外
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
它将从retail_db of MySQL中获取所有表,并在hive中为custom数据库创建相应的表。
https://stackoverflow.com/questions/39220939
复制相似问题