使用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
}
}
你们中的任何人都遇到过此类问题,您是如何解决的? 谢谢。
答案 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_platforms
和ARRAY[1,2,3,4]
):
ARRAY[