我有一个hive外部表n1
,其位置设置为/user/cloudera/n1
。我还有一个MySQL表,其名称也是n1
。现在当我尝试将n1
(MySQL)导入为n2
(Hive)时,我得到了这个奇怪的错误/user/cloudera/n1 already exists
。
[cloudera@quickstart ~]$ sqoop import --table n1 --connect jdbc:mysql://localhost/retail_db --username root --password cloudera --hive-import --hive-table n2 -m 1
18/02/08 06:34:05 ERROR tool.ImportTool: Import failed: org.apache.hadoop.mapred.FileAlreadyExistsException: Output directory hdfs://quickstart.cloudera:8020/user/cloudera/n1 already exists
at org.apache.hadoop.mapreduce.lib.output.FileOutputFormat.checkOutputSpecs(FileOutputFormat.java:146)
答案 0 :(得分:1)
这并不奇怪,这就是Sqoop的工作原理。当您使用Sqoop将表导入配置单元时,它将在表的名称中在用户主目录中创建一个暂存文件,如果是/user/cloudera/n1
这就是问题所在。
你应该移动你的外部表路径,或者你应该使用--targer-dir
在其他目录中导入表格,然后在其上创建一个hive表。