sqoop中--warehouse-dir和--target-dir命令之间的区别

时间:2016-05-24 14:04:26

标签: sqoop

我无法理解sqoop中以下命令之间的区别。如果有人可以用小例子来解释,那会更好。

 --warehouse-dir and --target-dir 

由于

6 个答案:

答案 0 :(得分:14)

下面的参数指向默认的hive表位置。它可以用于开发目的,你只想在内部表上执行一些测试。

  

- warehouse-dir

下面的参数指向一些hdfs位置,您可以在其中安装外部配置单元表。这在生产环境中非常有用,您希望每个数据都可用于某些外部目录和外部表。

  

- target-dir

答案 1 :(得分:6)

我在进口时遇到了:

- 仓库 - 目录: 它创建了一个目录,用作数据库目录( sqoop_db_movies )和表名(在import命令中给出)目录,该目录是使用仓库目录(数据库目录)中的导入文件自动创建的。

<强> - 目标-DIR: 它创建了一个目录,该目录用作导入文件的表名( sqoop_table_movies )。

示例: 1。 sqoop import --options-file /home/cloudera/sqoop/conn --table movies --warehouse-dir /sqoop_db_movies -m 1

输出为:

  

/ sqoop_db_movies /电影

     

/ sqoop_db_movies /电影/ _SUCCESS

     

/ sqoop_db_movies /电影/部分-M-00000

2。 sqoop import --options-file /home/cloudera/sqoop/conn --table movies --target-dir /sqoop_table_movies -m 1

输出为:

  

/ sqoop_table_movies / _SUCCESS

     

/ sqoop_table_movies /部分-M-00000

答案 2 :(得分:3)

--warehouse-dir 

通常在使用sqoop导入所有表时使用此选项。 此目录可以是任何内容,可以是您的hive / data / warehouse目录或其他一些父目录。所有表都将导入此父目录。

--target-dir

当您使用导入表工具导入单个表时,将使用此选项。 对于每个表,您都要提及该目录,并且该路径不得存在。

答案 3 :(得分:1)

如果要为多个表运行多个Sqoop作业,则需要在每次调用时更改--target-dir参数。

作为替代方案,Sqoop提供了另一个参数来选择输出目录。参数--warehouse-dir允许您仅指定父目录。

,而不是直接指定最终目录

Sqoop不是将数据写入仓库目录,而是创建一个与仓库目录中的表名相同的目录,并在那里导入数据。

这类似于Sqoop将数据导入HDFS上的主目录的默认情况,但明显的例外是--warehouse-dir参数允许您使用主目录以外的目录。请注意,除非您要导入具有相同名称的表,否则不需要对每个表导入更改此参数。

答案 4 :(得分:0)

- 仓库目录指向Hive文件夹以导入数据(我在批量导入表时使用了它),而在通过查询导入Hive时需要--target-dir(sqoop errs要求它)。在后一种情况下,它被用作映射器的临时区域,后面是LOAD INPATH。我设置--target-dir与--warehouse-dir相同(从整个表切换到查询导入之后)并且正在获取空表。从sqoop命令中删除了--warehouse-dir,并将--target -dir更改为/ tmp / newfolder,我对Hive的导入很高兴。

答案 5 :(得分:0)

我们通常使用仓库目录,即使仓库目录多表或单表工作正常。

另一个优点是,当您希望外部表数据存储在s3中时,只有Warehouse-dir与S3一起使用,这一点非常重要。