我无法理解sqoop中以下命令之间的区别。如果有人能举个小例子来解释就更好了。
--warehouse-dir and --target-dir
谢谢
h5qlskok1#
--warehouse-dir
通常在使用sqoop的import all tables工具导入所有表时使用此选项。这个目录可以是任何目录,可以是hive/data/warehouse目录,也可以是其他父目录。所有表都将导入到父目录中。
--target-dir
当必须使用导入表工具导入单个表时,将使用此选项。对于每个表,您必须提到目录,并且它不能已经存在于路径中。
qybjjes12#
下面的参数指向默认的配置单元表位置。它可以用于开发目的,您只需要在内部表上执行一些测试。--仓库主管下面的参数指向一些hdfs位置,您可以在这里挂载外部配置单元表。这在生产环境中很有用,您希望每个数据都可用于某些外部目录和外部表。--目标目录
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
sqoop import --options-file /home/cloudera/sqoop/conn --table movies --warehouse-dir /sqoop_db_movies -m 1
sqoop import --options-file /home/cloudera/sqoop/conn --table movies --target-dir /sqoop_table_movies -m 1
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导入也很满意。
wljmcqd85#
如果要为多个表运行多个sqoop作业,则需要在每次调用时更改--target dir参数。作为替代,sqoop提供了另一个参数来选择输出目录。参数--warehouse dir允许您只指定父目录,而不是直接指定最终目录。sqoop将创建一个与仓库目录中的表同名的目录,并在那里导入数据,而不是将数据写入仓库目录。这类似于sqoop将数据导入hdfs上的主目录的默认情况,但值得注意的例外是--warehouse dir参数允许您使用主目录以外的目录。请注意,此参数不需要随每次表导入而更改,除非您要导入具有相同名称的表。
a14dhokn6#
我们通常使用warehouse dir,即使使用warehouse dir多表或单表也可以。另一个优点是,只有warehouse dir可以与s3一起工作,这一点非常重要,当您希望外部表数据存储在s3中时。
6条答案
按热度按时间h5qlskok1#
通常在使用sqoop的import all tables工具导入所有表时使用此选项。这个目录可以是任何目录,可以是hive/data/warehouse目录,也可以是其他父目录。所有表都将导入到父目录中。
当必须使用导入表工具导入单个表时,将使用此选项。对于每个表,您必须提到目录,并且它不能已经存在于路径中。
qybjjes12#
下面的参数指向默认的配置单元表位置。它可以用于开发目的,您只需要在内部表上执行一些测试。
--仓库主管
下面的参数指向一些hdfs位置,您可以在这里挂载外部配置单元表。这在生产环境中很有用,您希望每个数据都可用于某些外部目录和外部表。
--目标目录
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
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导入也很满意。
wljmcqd85#
如果要为多个表运行多个sqoop作业,则需要在每次调用时更改--target dir参数。
作为替代,sqoop提供了另一个参数来选择输出目录。参数--warehouse dir允许您只指定父目录,而不是直接指定最终目录。
sqoop将创建一个与仓库目录中的表同名的目录,并在那里导入数据,而不是将数据写入仓库目录。
这类似于sqoop将数据导入hdfs上的主目录的默认情况,但值得注意的例外是--warehouse dir参数允许您使用主目录以外的目录。请注意,此参数不需要随每次表导入而更改,除非您要导入具有相同名称的表。
a14dhokn6#
我们通常使用warehouse dir,即使使用warehouse dir多表或单表也可以。
另一个优点是,只有warehouse dir可以与s3一起工作,这一点非常重要,当您希望外部表数据存储在s3中时。