-warehouse dir和--target dir命令的区别

nnvyjq4y  于 2021-06-04  发布在  Sqoop
关注(0)|答案(6)|浏览(1095)

我无法理解sqoop中以下命令之间的区别。如果有人能举个小例子来解释就更好了。

--warehouse-dir and --target-dir

谢谢

h5qlskok

h5qlskok1#

--warehouse-dir

通常在使用sqoop的import all tables工具导入所有表时使用此选项。这个目录可以是任何目录,可以是hive/data/warehouse目录,也可以是其他父目录。所有表都将导入到父目录中。

--target-dir

当必须使用导入表工具导入单个表时,将使用此选项。对于每个表,您必须提到目录,并且它不能已经存在于路径中。

qybjjes1

qybjjes12#

下面的参数指向默认的配置单元表位置。它可以用于开发目的,您只需要在内部表上执行一些测试。
--仓库主管
下面的参数指向一些hdfs位置,您可以在这里挂载外部配置单元表。这在生产环境中很有用,您希望每个数据都可用于某些外部目录和外部表。
--目标目录

dojqjjoe

dojqjjoe3#

如果是进口的话:
--warehouse dir:它创建一个目录,作为数据库目录(sqoop\u db\u movies)和表名(在import命令中给出)目录,该目录使用仓库中的dir(database directory)导入的文件自动创建。
例子: sqoop import --options-file /home/cloudera/sqoop/conn --table movies --warehouse-dir /sqoop_db_movies -m 1 输出为:
/sqoop\u db\u电影/电影
/sqoop\u db\u电影/电影/\u成功
/sqoop\u db\u电影/电影/第m部分-00000
--目标目录:它创建一个目录,作为导入文件的表名(sqoop\u table\u movies)。
例子: sqoop import --options-file /home/cloudera/sqoop/conn --table movies --target-dir /sqoop_table_movies -m 1 输出为:
/sqoop\u表\u电影/\u成功
/sqoop\表\电影/第m部分-00000

x0fgdtte

x0fgdtte4#

--warehouse dir指向要导入数据的配置单元文件夹(我在批量导入表时使用过它),而通过查询导入配置单元时需要--target dir(sqoop errs asking for it)。在后一种场景中,它被用作Map器的临时区域,之后是load inpath。我将--target dir设置为--warehouse dir(在从整个表切换到查询导入之后),得到的是空表。从sqoop命令中删除了--warehouse dir,并将--target dir改为/tmp/newfolder,我的hive导入也很满意。

wljmcqd8

wljmcqd85#

如果要为多个表运行多个sqoop作业,则需要在每次调用时更改--target dir参数。
作为替代,sqoop提供了另一个参数来选择输出目录。参数--warehouse dir允许您只指定父目录,而不是直接指定最终目录。
sqoop将创建一个与仓库目录中的表同名的目录,并在那里导入数据,而不是将数据写入仓库目录。
这类似于sqoop将数据导入hdfs上的主目录的默认情况,但值得注意的例外是--warehouse dir参数允许您使用主目录以外的目录。请注意,此参数不需要随每次表导入而更改,除非您要导入具有相同名称的表。

a14dhokn

a14dhokn6#

我们通常使用warehouse dir,即使使用warehouse dir多表或单表也可以。
另一个优点是,只有warehouse dir可以与s3一起工作,这一点非常重要,当您希望外部表数据存储在s3中时。

相关问题