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

LOGSTASH - Issue with JDBC input connected to HSQL DB database when selecting ARRAY columns

我无法使用 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 是 table 中的列名。)

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
  }
}

大家遇到过这种问题吗,怎么解决的? 谢谢。

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

我替换了行:

statement => "SELECT PLATFORM_DESTINATION_CANDIDATES FROM PUBLIC.MESSAGES_SENT"

与 :

 statement => SELECT concat_ws('', PLATFORM_DESTINATION_CANDIDATES , '') AS str_platforms

string 类型的数据放入字段 str_platforms 的结果如下:ARRAY[1,2,3,4]

在下面的 ruby 行中,我从字段中删除不需要的字符( ARRAY[] ):

ruby {
    code => "event.set('listRxUnits',event.get('str_platforms').split('ARRAY[')[1].split(']')[0])"
  }