jdbc - 如何关闭对logstash输出结果集中有多少行的预检查
问题描述
我正在尝试关闭预选 logstash 以确定行数,但 ExaSol DB 不支持任何聚合中的任何限制,有没有办法在 logstash 中将其关闭?
input {
jdbc {
jdbc_driver_library => "/opt/jdbc/exajdbc6.0.15.jar"
jdbc_driver_class => "com.exasol.jdbc.EXADriver"
jdbc_user => "am_mon"
jdbc_password => "XXXXX"
jdbc_connection_string => "jdbc:exa:xxx.xx.xx.xx..xx:xxxx"
jdbc_default_timezone => "Europe/Berlin"
# schedule => "05 7 * * *"
statement => "select local_date, LOCAL_HOUR, events from DWH_MON.V.M_EVENTS"
}
}
Logstash 错误日志:
[2019-06-07T12:28:00,834][ERROR][logstash.inputs.jdbc] Java::JavaSql::SQLException:聚合选择中不允许限制 [第 1 行,第 127 列](会话:1635677142479452406):SELECT 计数(*) AS "COUNT" FROM (select local_date, LOCAL_HOUR, events from DWH_MON.V.M_EVENTS limit 1) AS "T1" LIMIT 1
[2019-06-07T12:28:00,838][WARN][logstash.inputs.jdbc] 执行 JDBC 查询时出现异常 {:exception=>#}
由于 logstash 想要查看预期有多少行,它使用限制 1,但 exasol 无法处理聚合的任何限制。
解决方案
我猜这是 LogStash 的问题。这LIMIT 1
部分是不必要的,一开始就不应该在那里。
您可以尝试使用 SQL 预处理器来尝试识别此类查询并LIMIT
手动删除。但也许修补 LogStash 本身更容易。
推荐阅读
- c++ - 在构造函数之外延长 QT 对象的生命周期
- haskell - GHC API:查找实例函数的实现
- javascript - 父补偿。没有在听孩子 $emit
- .net-core - .Net-Core 2.2 MassTransit.ConfigurationException:状态机未正确配置
- sql - 使用循环更新耗时太长
- virtual-machine - 如何将我的虚拟机共享给其他人?
- javascript - 为什么使用 express 将数组发送到前端时 Json stringify 有帮助?
- objective-c - iOS 13 用户的 NSNumberFormatter 忽略 setRoundingIncrement
- python - 如何在小数点后附加4个数字的浮点数?
- java - Intellij Idea 2019.2 更新后在 Intellij 中导入项目时没有下一个和上一个按钮