默认的sqoop hive导入目标目录在哪里?它可以控制吗?

时间:2018-03-22 20:11:36

标签: hive sqoop

我需要做一个sqoop从现有的mysql数据库导入所有表到hive,第一个表是类别。

命令如下:

sqoop import-all-tables -m 1 \
--connect=jdbc:mysql://ms.itversity.com/retail_db \
--username=retail_user \
--password=itversity \
--hive-import \
--hive-overwrite \
--create-hive-table \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--outdir java_output0322

由于以下原因失败:

  

输出目录   hdfs://nn01.itversity.com:8020 / user / paslechoix / categories已经   存在

我想知道如何将它们导入/apps/hive/warehouse/paslechoix.db/

paslechoix是配置单元数据库名称。

20180323的UPDATE1给第一位评论的Bala:

我已将脚本更新为:

sqoop import-all-tables -m 1 \
--connect=jdbc:mysql://ms.itversity.com/retail_db \
--username=retail_user \
--password=itversity \
--hive-import \
--hive-overwrite \
--create-hive-table \
--hive-database paslechoix_new \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--outdir java_output0323

添加了你的建议:--hive-database paslechoix_new paslechoix_new是刚刚创建的一个新的配置单元数据库。

我仍然收到错误:

  

AlreadyExistsException:输出目录   hdfs://nn01.itversity.com:8020 / user / paslechoix / categories已经   存在

现在,它真的很有趣,为什么它一直指的是 paslechoix ?我已在脚本中指出hive数据库是 paslechoix_new ,为什么它没有被识别?

20180323更新2:

我在Bala的评论中提出了另一个建议:

sqoop import-all-tables -m 1 \
--connect=jdbc:mysql://ms.itversity.com/retail_db \
--username=retail_user \
--password=itversity \
--hive-import \
--hive-overwrite \
--create-hive-table \
--hive-database paslechoix_new \
--warehouse-dir /apps/hive/warehouse/paslechoix_new.db \
--compress \
--compression-codec org.apache.hadoop.io.compress.SnappyCodec \
--outdir java_output0323

所以现在导入不再抛出错误,但是,我检查了hive数据库,创建了所有表,没有数据

1 个答案:

答案 0 :(得分:0)

添加选项--warehouse-dir以导入特定目录

--warehouse-dir /apps/hive/warehouse/paslechoix.db/

如果要导入特定的配置单元数据库,请使用

--hive-database paslechoix