Sqoop 导入失败:请使用 --split-by 指定一个或使用 '-m 1' 执行顺序导入 即使在设置 mapper = 1 后也会出错
Posted
技术标签:
【中文标题】Sqoop 导入失败:请使用 --split-by 指定一个或使用 \'-m 1\' 执行顺序导入 即使在设置 mapper = 1 后也会出错【英文标题】:Sqoop Import failed : Please specify one with --split-by or perform a sequential import with '-m 1' Error even after setting mapper = 1Sqoop 导入失败:请使用 --split-by 指定一个或使用 '-m 1' 执行顺序导入 即使在设置 mapper = 1 后也会出错 【发布时间】:2018-10-08 13:05:39 【问题描述】:我正在将一个表从 SQL Server 导入到 Hive。
sqoop import \
--connect "jdbc:sqlserver://<server-name>:<port-no>;database=<database-name>" \
--username <user-name> \
-P \
--table <table-name> \
-- --schema <schema-name> \
--hive-import \
--hive-database <hive-database-name> \
--hive-table <hive-table-name> \
--target-dir /tmp \
-m 1
该表没有主键,所以我添加了 -m 1(运行一个映射器),但设置“-m 1”仍然出错。
错误 tool.ImportTool:导入失败:找不到表的主键。请使用 --split-by 指定一个或使用 '-m 1' 执行顺序导入。
我正在开发一个 3 节点集群,版本详细信息是:
发行版:Hortonrowks HDP3.0
Sqoop:1.4
蜂巢:3.1
【问题讨论】:
【参考方案1】:您只需使用带有m
参数的一个破折号:-m 1
(不是--m 1
)并将-- --schema <schema-name>
移动到命令末尾,因为 Sqoop CLI 具有以下结构:
sqoop TOOL PROPERTY_ARGS SQOOP_ARGS [-- EXTRA_ARGS]
【讨论】:
对不起,这只是-m 1(不是--m 1)。这只是一个错字。 也许您的问题与 args 顺序有关:CLI 具有以下结构:sqoop TOOL PROPERTY_ARGS SQOOP_ARGS [-- EXTRA_ARGS]。尝试将-- --schema <schema-name>
移动到命令末尾或避免使用它(--table <schema-name>.<table-name>
)。
如果我将 --schema 参数移动到参数的结尾,例如,sqoop 发出查询但抛出错误 ERROR hook.AtlasHook: Failed to send notification - attempt #1; error=Missing required configuration "bootstrap.servers" which has no default value.
ERROR hook.AtlasHook: Failed to send notification - attempt #2; error=Missing required configuration "bootstrap.servers" which has no default value.
org.apache.kafka.common.config.ConfigException: Missing required configuration "bootstrap.servers" which has no default value.
如果我像 schema.tablename 这样结合模式和表名,它会抛出表不存在的错误。
这是另一个问题。我认为您可以暂时禁用 Sqoop 挂钩以检查导入是否正常 (atlas.apache.org/Hook-Sqoop.html)。或者通过添加所需的配置参数bootstrap.servers
(atlas.apache.org/Configuration.html) 来解决这个问题。如果您不能自己解决,您可以向 SO 发布新问题。无论如何,您原始问题的解决方案是将 -- --schema <schema-name>
移动到命令的末尾。我已经更新了我的答案:如果您觉得合适,请接受并投票。以上是关于Sqoop 导入失败:请使用 --split-by 指定一个或使用 '-m 1' 执行顺序导入 即使在设置 mapper = 1 后也会出错的主要内容,如果未能解决你的问题,请参考以下文章
解决sqoop 导入oracle表时 --split-by参数为日期类型时的报错:ORA-01861: literal does not match format string