Sqoop import-all-table 到特定数据库中的 hive 失败
Sqoop import-all-table to hive in specific database fails
我正在执行下面的 sqoop 命令
sqoop import-all-tables -m 1 \
--connect "jdbc:mysql://nn01.itversity.com:3306/retail_db" \
--username=retail_dba \
--password=itversity \
--hive-import \
--hive-home /apps/hive/warehouse \
--hive-overwrite \
--hive-database grv_sqoop_import \
--create-hive-table \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--outdir java_files
正如我指定的那样,应该将 --hive-database
表导入其中。但我收到以下错误:
ERROR tool.ImportAllTablesTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Ou
tput directory hdfs://nn01.itversity.com:8020/user/gauravfrankly/categories already exists
无法理解为什么要查看 /user/gauravfrankly/
hdfs 位置。
帮助理解这个问题,我在这里遗漏了什么?
我也经历过,但想知道,有没有其他更好的方法来处理它。
你可以试试这些:
删除这个:--create-hive-table
如果设置,那么如果目标配置单元作业将失败
table 退出。默认情况下,此 属性 为假。
并添加:--hive-overwrite
覆盖 Hive 中的现有数据 table.
提供:--warehouse-dir <dir>
HDFS parent for table destination.
当您将数据作为 Hive table 导入 HDFS 时,Sqoop 首先在您的主目录(您的案例 /user/gauravfrankly/
)中创建一个具有相同文件夹名称的暂存区,然后将数据移动到 hive目录。
因此,主目录中不应该有任何与您作为配置单元 table 导入的 table 名称相同的目录。如果它在那里,它会给你同样的错误。
解决方案是从主位置删除目录,然后重试。
注意:这仅在您作为配置单元导入时发生 table,当您导入到 HDFS 时不会发生暂存。
我正在执行下面的 sqoop 命令
sqoop import-all-tables -m 1 \
--connect "jdbc:mysql://nn01.itversity.com:3306/retail_db" \
--username=retail_dba \
--password=itversity \
--hive-import \
--hive-home /apps/hive/warehouse \
--hive-overwrite \
--hive-database grv_sqoop_import \
--create-hive-table \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--outdir java_files
正如我指定的那样,应该将 --hive-database
表导入其中。但我收到以下错误:
ERROR tool.ImportAllTablesTool: Encountered IOException running import job: org.apache.hadoop.mapred.FileAlreadyExistsException: Ou
tput directory hdfs://nn01.itversity.com:8020/user/gauravfrankly/categories already exists
无法理解为什么要查看 /user/gauravfrankly/
hdfs 位置。
帮助理解这个问题,我在这里遗漏了什么?
我也经历过
你可以试试这些:
删除这个:
--create-hive-table
如果设置,那么如果目标配置单元作业将失败 table 退出。默认情况下,此 属性 为假。 并添加:--hive-overwrite
覆盖 Hive 中的现有数据 table.提供:
--warehouse-dir <dir>
HDFS parent for table destination.
当您将数据作为 Hive table 导入 HDFS 时,Sqoop 首先在您的主目录(您的案例 /user/gauravfrankly/
)中创建一个具有相同文件夹名称的暂存区,然后将数据移动到 hive目录。
因此,主目录中不应该有任何与您作为配置单元 table 导入的 table 名称相同的目录。如果它在那里,它会给你同样的错误。
解决方案是从主位置删除目录,然后重试。
注意:这仅在您作为配置单元导入时发生 table,当您导入到 HDFS 时不会发生暂存。