Sqoop:强制Sqoop制作目标目录

Sqoop: Force Sqoop to make the target directory

对整个Hadoop系统还是个新手。顾名思义,有没有办法让Sqoop在导入的时候创建目标目录呢?或者目标目录在发送到 HDFS 之前是否总是必须存在。

谢谢。

如果目标目录不存在,sqoop 会根据您在 sqoop 命令中指定的路径创建一个目标目录

--target-dir <dir>

如果您已经有一个目录并且如果您尝试 运行 sqoop 命令,它会失败并且为了避免您必须指定以下选项并且它将删除该目录(如果存在)。

--delete-target-dir

一个来自 cloudera vm box 的例子,它有默认 mysql 和样本数据

sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password cloudera \
--target-dir /user/cloudera/sqoop_import/orders \
--delete-target-dir \
--num-mappers 2 \
 --query "select * from orders " \
--split-by order_id

或者,您也可以指定父目录,所有 table 文件夹都将使用 table 名称创建。在这种情况下 --target-dir 与 --warehouse-dir

不兼容
sqoop import \
--connect jdbc:mysql://localhost:3306/retail_db \
--username root \
--password cloudera \
--table orders \
--warehouse-dir /user/cloudera/sqoop_import/