elasticsearch - 在 logstash .conf 文件中执行 JDBC 查询时出现异常
问题描述
MySQL 5.6.35 RHEL 7 Logstash 版本 6.2.4 MySQL 驱动:mysql-connector-java-8.0.11.jar
运行 logstash 脚本时出现以下错误
[2018-06-18T14:39:49,395][WARN ][logstash.inputs.jdbc ] Exception when executing JDBC query {:exception=>#<Sequel::DatabaseError: Java::JavaLang::IllegalArgumentException: MONTH>}
[2018-06-18T14:39:49,667][INFO ][logstash.pipeline ] Pipeline has terminated {:pipeline_id=>"main", :thread=>"#<Thread:0x2937cfc6@/usr/share/logstash/logstash-core/lib/logstash/pipeline.rb:247 run>"}
它总是在同一组记录中,所以我确信这是一个数据问题。
错误提到的事实IllegalArgumentException: MONTH>
让我认为这是一个日期问题,但我在数据中看不到任何明显的问题,并且错误消息没有为我提供足够的信息来进一步了解错误。我所有的空日期都是空的,而不是 '0000-00-00'
有谁知道是否有任何其他日志可以帮助我识别错误。
这是我的 conf.d 文件夹中的脚本。
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://localhost:3306/hawk_aol"
#useCursorFetch=true&
# The user we wish to execute our statement as
jdbc_user => "root"
jdbc_password => ""
# The path to our downloaded jdbc driver
jdbc_driver_library => "/apps/elasticsearch/drivers/mysql-connector-java-8.0.11.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
# our query
statement => "SELECT * FROM weekly_data"
#jdbc_fetch_size => "5000"
jdbc_paging_enabled => true
jdbc_page_size => 100000
}
}
output {
stdout { codec => json_lines }
elasticsearch {
"hosts" => "localhost:9200"
"index" => "aol"
"document_type" => "weekly_data"
"document_id" => "%{id}"
}
}
解决方案
我解决了我自己的问题。我认为这个问题与日期有关,我一直在我的数据库中搜索值为 0000-00-00 的日期并将它们转换为 null,但是有一个日期的值为 2016-00-00,一旦我将其清除为空,一切都按预期开始运行。
推荐阅读
- r - S3 方法的正确实现:我什么时候应该使用省略号?
- java - 通过 Google Cloud Datastore 进行地理空间查询
- flask - 无法从我的本地机器访问部署在 OpenShift 上的 Flask 应用程序服务的端点
- excel - 如何确定用户是否关闭了已由 Excel 中的代码打开的 Access 应用程序
- sql - 创建表时计算默认值的 SQL 列
- botframework - 网络聊天:如何更改网络聊天中卡片的边框颜色?
- visual-studio-2010 - 在基于 MFC 对话框的应用程序的不同页面上链接 2 个复选框
- angular - 错误类型错误:无法读取未定义的属性“getProjection”
- javascript - 从控制台访问 DataLayer 变量
- c# - 实体框架 6 - 重复时仅返回一个实体