IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 通过Logstash从ElasticSearch消费数据存储至Mysql -> 正文阅读

[大数据]通过Logstash从ElasticSearch消费数据存储至Mysql

版本说明:

组件版本
ElasticSearch6.8.4
Logstash6.2.3
Mysql5.7.26

1、logstash-output-jdbc插件安装

Logstash相关原理参看官网:https://www.elastic.co/guide/en/logstash/6.8/index.html,因Logstash的output暂时不支持jdbc,故这里我们需要引入第三方插件。网上搜索logstash-output-jdbc插件来源于:https://github.com/theangryangel/logstash-output-jdbc,但该作者先已没有时间进行维护,故Logstash6.3以上版本也没有进行测试。

logstash-output-jdbc主要有两种安装方式:

(1)离线安装

https://rubygems.org/gems/logstash-output-jdbc/versions/5.4.0https://rubygems.org/gems/logstash-codec-plain/versions/3.0.6上,下载logstash-output-jdbc-5.4.0.gem和logstash-codec-plain-3.0.6.gem。按照如下命令生成logstash-output-jdbc插件。

#创建logstash-output-jdbc文件夹
cd /appdata && mkdir -p logstash-output-jdbc
mkdir -p logstash-output-jdbc/dependencies

#将gem文件放入至logstash-output-jdbc
cp logstash-output-jdbc-5.4.0.gem logstash-output-jdbc
cp logstash-codec-plain-3.0.6.gem logstash-output-jdbc/dependencies

#查看文件信息
[adelmo@znb appdata]$ find logstash-output-jdbc
logstash-output-jdbc
logstash-output-jdbc/dependencies
logstash-output-jdbc/dependencies/logstash-codec-plain-3.0.6.gem
logstash-output-jdbc/logstash-output-jdbc-5.4.0.gem

#执行压缩命名,生成插件
zip -q -r logstash-output-jdbc.zip logstash-output-jdbc

至此,我们已经生成logstash-output-jdbc.zip插件

注意:

(2)在线安装

进入 logstash安装目录

cd /appdata/logstash-6.2.3
bin/logstash-plugin install --no-verify logstash-output-jdbc

安装报错:

[adelmo@znb logstash-6.2.3]# bin/logstash-plugin install --no-verify logstash-output-jdbc
Installing logstash-output-jdbc
Error Bundler::HTTPError, retrying 1/10
Could not fetch specs from https://rubygems.org/
Error Bundler::HTTPError, retrying 2/10
Could not fetch specs from https://rubygems.org/
...

原因:?https://rubygems.org/源被墙了

切换源:?https://gems.ruby-china.com/

gem sources --add https://gems.ruby-china.com/ --remove https://rubygems.org/

查看当前源:

gem sources -l

如切换成功,可以看到只https://gems.ruby-china.com
安装命令:

bin/logstash-plugin install --no-verify logstash-output-jdbc

将mysql-connector-jar对应版本的jar包放入logstash-core/lib/jars目录下,完成。

2、logstash安装和配置

2.1 logstash安装和配置

Logstash安装可参看官网介绍: https://www.elastic.co/guide/en/logstash/6.8/installing-logstash.html

logstash配置主要将jvm内存调大。默认为1g,可根据实际情况调整。

2.2 安装logstash-output-jdbc插件

#安装logstash-output-jdbc.zip插件
cd /appdata/logstash-6.2.3
bin/logstash-plugin install file:///appdata/logstash-6.2.3/logstash-output-jdbc.zip

#出现Install successful表示安装成功

#检查是否安装成功
[adelmo@znb logstash-6.2.3]$ bin/logstash-plugin list|grep jdbc

logstash-filter-jdbc_static

logstash-filter-jdbc_streaming

logstash-input-jdbc

logstash-output-jdbc

2.3将mysql-connector-java放入logstash目录下

https://mvnrepository.com/artifact/mysql/mysql-connector-java下载一个相对较新的5.1版本,我这里下载的是5.1.46,放在logstash-6.2.3目录下。

2.4准备消费的配置文件

cd /appdata/logstash-6.2.3 && mkdir -p conf

vim conf/dt_complyee.conf

input {
    elasticsearch {
        hosts => "[127.0.0.1:9200]"
        index => "dt_complyee_202205"
        query => '{ "query": { "match_all": {} } }'
        user => "adelmo"
        password => "123456"
    }
}
 
output {
    jdbc{
        driver_jar_path => "/appdata/logstash-6.2.3/mysql-connector-java-5.1.46.jar"
        driver_class => "com.mysql.jdbc.Driver"
        connection_string => "jdbc:mysql://xxx.xxx.xxx.xxx:xxxx/douyin?autoReconnect=true&user=xxxx@xxxx&password=xxxxx"
        statement => ["insert into dt_info(id,name,age,company) values(?,?,?,?)","[id]", "[name]", "[age]", "[company]"]
    }
}

3、从ElasticSearch消费数据至Mysql

#启动logstash,将dt_complyee_202205索引数据消费至mysql

bin/logstash -f ./conf/dt_complyee.conf

此时,若出现如下字段不匹配错误,Incorrect DECIMAL value: '0' for column '' at row -1。网上一些方案,比如修改sql_mode方式【https://blog.csdn.net/weixin_42299140/article/details/113429847mysql中出现Incorrect DECIMAL value: '0' for column '' at row -1错误解决方案 - WKellyL - 博客园】但是不管用。

最终解决方案参看:Incorrect decimal (integer) value: ' ' mySQL - Stack Overflow。将

insert into 改成 insert ignore into

完美解决该问题。

4、运行结果

?

5、参考文档

一些质量较好的参考文档:

Logstash Reference [6.8] | Elastic

GitHub - theangryangel/logstash-output-jdbc: JDBC output for Logstash

https://www.freesion.com/article/11251122802/

ELK->logstash output jdbc插件 - 请点..头像 - 博客园

Logstash将数据导入至MYSQL - SegmentFault 思否

Incorrect decimal (integer) value: ' ' mySQL - Stack Overflow

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-21 19:02:54  更:2022-05-21 19:05:49 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:52:15-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码