Sqoop语法覆盖HDFS进口的所有表

问题描述:

在我的HDFS已经存在目录“MyDatabase的”,我试图更新是在MySQL与sqoop HDFSSqoop语法覆盖HDFS进口的所有表

然而数据,在进口清一色tables命令没有在HDFS目录中没有覆盖选项,仅在蜂巢

我尝试做以下命令:

sqoop import-all-tables 
--connect jdbc:mysql://10.20.20.43/mydatabase 
--username blizzard 
--password blizzard 
--warehouse-dir /user/hdfs/mydatabase -m 1 
--hive-database mydatabase 
--hive-import 
--hive-overwrite 
--null-string '\\N' 
--null-non-string '\\N' 
--verbose 

但我有一个错误:

17/05/03 19:48:13 ERROR tool.ImportAllTablesTool: 
Encountered IOException running import job: 
org.apache.hadoop.mapred.FileAlreadyExistsException: 
Output directory hdfs://10.20.20.43:8020/user/hdfs/mydatabase/table1 
already exists 

我总是想导入所有的数据,因为我不知道哪一个数据可以被更改。

这样做的最好方法是什么?

谢谢!

编辑:

--delete-target-dir命令只对import而不是为import-all-tables根据文档https://sqoop.apache.org/docs/1.4.6/SqoopUserGuide.html

+1

的[覆盖HDFS目录Sqoop进口(http://stackoverflow.com/questions/40130163/overwrite-hdfs-directory-sqoop-import) – Andrew

+0

不重复,如果可能的话重复你请查看文档,您所说的帖子的命令(--delete-target-dir)仅用于命令导入,而不是用于命令import-all-tables,这是我的疑问 https://sqoop.apache .org/docs/1.4.6/SqoopUserGuide.html @Andrew –

您可以删除所有数据再次重写它们。之前尝试:

$hdfs dfs -rm -r /user/hduser/*