还是整个hadoop系统的新手。正如标题所暗示的,有没有方法让sqoop在导入期间创建目标目录?或者目标目录在发送到hdfs之前必须存在。谢谢您。
enxuqcxy1#
如果目标目录不存在,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
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
或者,也可以指定父目录,所有表文件夹都将使用表名创建。在本例中--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/
--table orders \
--warehouse-dir /user/cloudera/sqoop_import/
1条答案
按热度按时间enxuqcxy1#
如果目标目录不存在,sqoop将根据sqoop命令中指定的路径创建一个目标目录
如果您已经有一个目录,并且您尝试运行sqoop命令,那么它将失败,为了避免这种情况,您必须指定以下选项,并且如果存在该目录,它将删除该目录。
cloudera vm box的一个示例,它具有带有示例数据的默认mysql
或者,也可以指定父目录,所有表文件夹都将使用表名创建。在本例中--target dir与--warehouse dir不兼容