LOGSTASH-选择ARRAY列时,JDBC输入连接到HSQL DB数据库的问题

时间:2019-10-21 14:33:00

标签: jdbc logstash hsqldb logstash-jdbc

使用Logstash的JDBC输入插件成功导入 HSQL DB 数据库内容时遇到麻烦。

当我尝试获取 ARRAY 类型的列时,会发生问题。

请注意,如果我尝试获取非数组列,则可以正常工作。

我从Logstash收到以下错误消息:

[WARN ][logstash.inputs.jdbc     ] Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::OrgLogstash::MissingConverterException: Missing Converter handling for full class name=org.hsqldb.jdbc.JDBCArray, simple name=JDBCArray>}
[INFO ][logstash.pipeline        ] Pipeline has terminated {:pipeline_id=>"hsql", :thread=>"#<Thread:0x7b626752 run>"}

请在Logstash conf文件的输入部分下面找到(PLATFORM_DESTINATION_CANDIDATES是表中列的名称。)

input {
  jdbc {
    jdbc_driver_library => "hsqldb_2.5.0.jar"
    jdbc_driver_class => "org.hsqldb.jdbc.JDBCDriver"
    jdbc_connection_string => "jdbc:hsqldb:hsql://localhost/probe"
    jdbc_user => "SA"
    statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"
    connection_retry_attempts => 10
  }
}

你们中的任何人都遇到过此类问题,您是如何解决的? 谢谢。

  • 操作系统:Windows 10
  • Logstash版本:6.3.1
  • HSQLDB驱动程序版本:2.5.0(LINK

1 个答案:

答案 0 :(得分:0)

我不知道这是否是最佳解决方案,但我设法解决了我的问题。这就是方法。

我替换了行:

<Policies>
   <SizeBasedTriggeringPolicy size="1 GB" /> 
...
<Policies>
...
<DefaultRolloverStrategy max="10"/>

与:

log4j:ERROR Failed to flush writer,                                             
java.io.IOException

结果是将数据类型为{strong> string 的字段statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT" 插入 statement => SELECT concat_ws('', PLATFORM_DESTINATION_CANDIDATES , '') AS str_platforms

在下面的红宝石行中,然后从字段中删除不需要的字符(str_platformsARRAY[1,2,3,4]):

ARRAY[