我需要做一个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数据库,创建了所有表,没有数据
答案 0 :(得分:0)
添加选项--warehouse-dir
以导入特定目录
--warehouse-dir /apps/hive/warehouse/paslechoix.db/
如果要导入特定的配置单元数据库,请使用
--hive-database paslechoix