Sqoop 导出中的 --direct 参数如何与 Vertica 一起使用?

How does --direct parameter in Sqoop export work with Vertica?

我在将大量数据从 HDFS 导出到 Vertica 时遇到 Too many ROS containers ... 错误。我知道 vsql COPY 有一个 direct 选项,它将绕过 WOS 并将数据加载到 ROS 容器中。我还注意到 Sqoop Export 中的 --directsee this Sqoop User Guide。我只是想知道这两个 "direct" 是否具有相同的功能。

我曾尝试修改 Vertica 配置参数,例如 MoveOutIntervalMergeOutInterval... 但这并没有太大帮助。

所以有人知道 direct Sqoop 导出模式是否有助于解决 ROS 容器问题。谢谢!

--direct 仅受特定数据库连接器支持。由于没有用于 Vertica 的工具,您将使用通用 JDBC 工具。我真的怀疑使用 --direct 有什么作用...但是如果你真的想测试它,你可以查看 query_requests 中发送的语句。

select * 
from query_requests
where request_type = 'LOAD'
and start_timestamp > clock_timestamp() - interval '1 hour'

这将向您显示过去一小时内的所有加载语句。 sqoop 语句应转换为 COPY。无论如何我真的希望!如果它是一堆 INSERT ... VALUES 语句,那么我强烈建议不要使用它。如果它没有生成 COPY,那么您需要更改上面的查询以查找 INSERT

select * 
from query_requests
where request_type = 'QUERY'
and request ilike 'insert%'
and start_timestamp > clock_timestamp() - interval '1 hour'

让我知道您在这里找到了什么。如果它正在执行 INSERT...VALUES 那么我可以告诉您如何修复它(但这需要一些工作)。