使用kettle+kafka+logstash+elasticsearch实现数据清洗入库并快速搜索

探讨使用Kettle从文本文件读取数据,通过自定义脚本处理并转化为JSON格式,最终推送至Kafka的过程。文章详细记录了遇到的问题及解决方法,包括Kettle插件配置、JSON格式调整及与Logstash、Elasticsearch集成的最佳实践。

警告: 本篇博客是记录一个学习的过程,中间会有很多弯路

kettle中可以使用多种输入输出, 常用的有:表输入,文件输入,表输出,文件输出等, 本文用到的输入为txt文本文件输入, 输出类型为输出到kafka
这里解释一下为什么要是用kafka而不是直接生成文件到本地
因为需要处理的数据是比较多的, 一般是几亿条, 或者几十亿条, 文件大概是几个G到几十G, 如果生成的文件落地到磁盘, 那将会非常耗费资源

kettle从数据源获取数据, 这里是从txt文件中获取

首先新建一个转换
在这里插入图片描述
在输入目录中, 找到"文本文件输入",拖动到右侧编辑页面中
在这里插入图片描述
按住"shift"键 , 将两个图标连接起来, 双击图标对"文本文件输入"进行编辑, 点击"浏览"选择文本文件, 选择后点击"增加"即可添加到输入文件目录中,最后点击"确定"
在这里插入图片描述
随后还需要对输入的数据的字段进行设置, 再次双击打开, 点击"字段" – > “获取字段” --> “Manimal width”,这里我只有一个字段, 处理完结果如下, 点击确定即可
在这里插入图片描述

对文件中数据进行格式化加工,输出json格式数据

在左侧目录中,选择"输出" --> "JSON output"输出,双击打开设置页面
在这里插入图片描述
目前kettle自带的json Output 可以支持三种输出模式

  1. 输出json字符串的值
  2. 以json格式写入到文件
  3. 输出json格式的值,同时写入数据到指定文件

在这里插入图片描述
在操作中可以设置应该如何输出, 是只需要输出值? 还是需要写入到文件? 还是需要既输出值又需要写入到文件?
设置中:

  1. Json条目名称, 这个是用来配置生成的json数据的键的, 可参考下面的json格式, 这里默认是data
  2. 一个数据条目的数据行:用来配置data中有多少个json串,如果设置为不为0的数, 那么就会生成多个文件,每个文件中的json有指定数量的子json串,如果不设置值, 所有数据都会在同一个文件中
  3. 输出值: 生成json串在后面使用时如何调用, 这里配置的是变量字段的名称
  4. 兼容模式没啥大用, 影响不大
  5. 文件名: 如果设置为写入到文件或者既输出值又写入到文件, 那么需要在这里指定输出位置和文件名
  6. 扩展名:在这里指定文件的类型, 常用的也就是js和txt

但是存在一个问题就是我们需要写入kafka中, logstash对kafka中的topic进行读取,这时kafka中topic的每条记录都应该是json格式,例如

{
   
   "name":"tomcat"}

而kettle中自带json Output插件输出的json格式为:

"{""data"":[{""pwd"":""aol.com""},{""pwd"":""mail.ru""},{""pwd"":""mail.ru""},{""pwd"":""plews.com""},{""pwd"":""mail.ru""},{""pwd"":""rambler.ru""},{""pwd"":""aol.com""},{""pwd"":""gmail.com""},{""pwd"":""gmail.com""},{""pwd"":""hotmail.com""}]}"

这明显不是我们要求的样子啊,哪来那么多的引号啊???
然后看一下使用json Output的输出到文件的效果,这里可以设置生成文件类型为js
这时
输出到js文件中格式是:

{
   
   "data":[{
   
   "pwd":"aol.com"},{
   
   "pwd":"mail.ru"},{
   
   
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值