一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效)

2023-11-01

Kafka到HDFS,除了用Kafka API和flume之外,还可以用kettle,最大优点是不用写代码!

版本:Kettle版本:8.2、Hadoop版本:3.1.3

前提:    详情请看鄙人的一百零一、Kettle8.2.0连接Hive3.1.2(踩坑,亲测有效)

http://t.csdn.cn/mWfOChttp://t.csdn.cn/mWfOC

前提一、Hadoop系列配置文件已复制到kettle路径下     路径为:D:\java\kettle\pdi-ce-8.2.0.0-342\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp30

注意:以上的配置文件要与自己使用的服务器配置文件一致 

前提二、在D:\java\kettle\pdi-ce-8.2.0.0-342\data-integration\plugins\pentaho-big-data-plugin\hadoop-configurations\hdp30\lib文件夹下注意替换jar包

 前提三、在D:\java\kettle\pdi-ce-8.2.0.0-342\data-integration\lib增加MySQL驱动包,注意驱动包版本问题

 这些准备好之后,下面开始用kettle采集Kafka中的数据到hdfs!

第1步,在kettle中创建新的转换任务。

第2步,在Streaming中拖拽Kafka consumer控件,并且修改Kafka consumer控件配置信息

首先,Setup模块

Transformation:最好新建一个,用于返回流中的结果

Connection:选择direct ,右侧输入bootstrap-server     IP地址:端口号9092

Topics:选择kafka消费的topic

Consumer group:消费者组,随便填

其次,Batch模块(根据自己的实际情况修改参数

Duration: 处理批次间隔

Number-of-records: 处理批次条数

maximum concurrent batches:最大并发批次(8.2版本没有,9.3版本有)

message prefetch limit:消息预取限制,防止读取数据量太大,造成kettle挂掉(8.2版本没有,9.3版本有)

Offset-management: 偏移量管理

最后,Result fields模块

 

 其余,Fields和Options两个模块不需要修改。

 第3步,拖拽一个应用模块里面的写日志控件,方便查看Kafka中的字段

 第4步,拖拽一个转换模块里面的字段选择控件,只取Kafka日志中的Message字段

 第5步,是关键的一步!!! 拖拽输入模块里的JSON input插件

首先,在文件模块页面,勾选源定义在一个字段里,并从Message字段获取源。可以修改步骤名称

其次,在字段模块。如果Select fields查不到字段的话,别慌。手动输入即可,不过此处为第一级别的字段,二级字段不在此处。不需要很详细。另外,要注意字段的类型

这是第一个大坑。明明Kafka里有数据,JSON input控件却找不到字段,最后发现可以手动输入字段名。

第6步,由于还有二级字段需要解析,因此还要再拖拽一个JSON input字段

首先,拖拽输入模块里的JSON input插件

其次,在文件模块,勾选源定义在一个字段里,并从evaluationList字段获取源

最后,在字段页面,Select fields字段。如果找不到,手动输入即可。注意,字段类型

 

 第7步,为了方便查看目前已有的字段,并且修改一些字段的名称,再次拖拽转换模块里面的字段选择控件

首先,在选择和修改页面,获取选择的字段,并且把不用的字段删掉

其次,在元数据页面,修改需要修改的字段名称,注意字段类型以及格式的修改,特别是时间戳类型的字段,不能用string

 第8步,最后一个控件。由于我这边是从Kafka读取数据到HDFS,所以我这边是拖拽Big Data里的Hadoop file output控件

首先,拖拽Big Data里的Hadoop file output控件

其次,在文件页面。

 

1.选择Hadoop Cluster  如果没有,可以新建一个  (前提是开启了Hadoop)

1.1.点击New新建Hadoop Cluster 

cluster name:随便填

storage:选择HDFS

HDFS的Hostname、Port,注意与Hadoop配置文件core-site.xml里填的一模一样

Username和Password就填自己的服务器密码,一般用户名是root,密码就是自己设置的root用户密码

 注意:如果配置文件core-site.xml里hostname是hurys22,那么kettle里的Hostname也必须是hurys22,而不能是192.168.1.22这种,这是第二个大坑

 1.2 这部分填好即可,剩下的部分不用填。填好后测试一下

这4个好即可,其他不需要

 2.在Folder/File,选择hdfs的文件路径。可以先自己创建好,也可以让它自动生成。不过,自己要先创建好目标文件夹,因为她有个文件权限的问题。这是第三个大坑!!!

其实,经踩坑后发现,目标文件evaluation.csv,kettle任务可以自行创建,不过目标文件夹rtp,如果HDFS没有则必须提前手动创建好,然后给这个文件夹赋权即可。

2.1 创建hdfs目标文件夹

[root@hurys22 soft]# hdfs dfs -mkdir  -p  /rtp

2.2 文件赋权

[root@hurys22 ~]# hdfs dfs -chmod -R 777 /rtp/

注意:必须要修改文件夹权限,否则kettle会报错文件权限不够

Caused by: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException): Permission denied: user=Administrator, access=WRITE, inode="/rtp":root:supergroup:drwxr-xr-x

3.如果自己已经创建好目标文件,那么要勾选 启动时不创建文件

4.文件扩展名填csv  

5.一定要指定日期时间格式,一般选择年月日或者年月日时分秒。否则。你第二次导到HDFS的数据会覆盖第一次导出的数据,因为文件路径是一样的    这是第四个大坑!!!

6.一个小技巧,可以通过显示文件名查看即将生成的目标文件名,从而可以确认文件名是否正确

 

 7.在内容页面。选择分隔符,一般是,或者;     还有编码:UTF-8

 8.在字段页面,点击获取字段和最小宽度,检查所需字段以及字段类型,注意时间戳字段类型的格式

 第9步,在Hadoop file output控件修改好,保存kettle任务,点击运行

 同时,HDFS会在提前建好的目标文件夹下自动生成目标文件,当任务停止时,文件才会显示数据大小。

 不过,可以直接下载查看

第一步,点击Download

 第二步,在下载文件夹下可以看到刚才下载的文件evaluation.csv以及文件大小

第三步,用notepad++打开目标文件evaluation.csv查看数据

截止这边,用kettle采集Kafka数据到HDFS中就全部结束了,坑也挺多的。

乐于奉献共享,帮我你我他!!!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效) 的相关文章

随机推荐

  • 正则表达式匹配不包含某些字符串的技巧

    经常我们会遇到想找出不包含某个字符串的文本 程序员最容易想到的是在正则表达式里使用 hede 来过滤 hede 字串 但这种写法是错误的 我们可以这样写 hede 但这样的正则表达式完全是另外一个意思 它的意思是字符串里不能包含 h e d
  • 【深度学习】 Python 和 NumPy 系列教程(廿五):Matplotlib详解:3、多子图和布局:subplot()函数

    目录 一 前言 二 实验环境 三 Matplotlib详解 1 2d绘图类型 2 3d绘图类型 3 多子图和布局 1 subplot 函数 简单示例 一 前言 Python是一种高级编程语言 由Guido van Rossum于1991年创
  • Blender安装Babylon插件

    参考链接 https doc babylonjs com extensions Exporters Blender 安装步骤图示 首先去这个网站下载此文件 https github com BabylonJS BlenderExporter
  • 区块链安全————区块链技术安全讨论

    0x00 背景介绍 区块链技术是金融科技 Fintech 领域的一项重要技术创新 作为分布式记账 Distributed Ledger Technology DLT 平台的核心技术 区块链被认为在金融 征信 物联网 经济贸易结算 资产管理等
  • 浏览器出现无法访问此页面的提示的解决办法

    部分地区与网络会出现该问题 本人查询论坛后找到的有效解决办法为 控制面板 网络和internet internet选项 连接 局域网设置 在 为LAN使用代理服务器 这一栏打上勾 点击应用退出 刷新一下就可以 下来也有可能是hosts文件里
  • Kotlin高阶函数概念

    一 高阶函数的基本概念 1 传入或者返回函数的函数 传入是函数 返回也是函数 2 函数引用最常见的方式 println 3 带有接收者Receiver的引用pdfPrinter println 二 看一下入门的例子 package net
  • 腾讯员工收入曝光,我顿悟了一个成人世界的残酷事实

    最近 一张腾讯员工的收入证明火了 收入证明上显示 这位员工的职位是腾讯 成都 某游戏客户端开发 已入职9年 而在他的税后年收入那一栏 显示着251多万元 包括工资 奖金和津贴等 平均月收入约20万 算下来 税前大概是450万 这张图在网上流
  • android壁纸显示逻辑

    所有文章仅限自己备忘 并无他用 壁纸主要分为两类 锁屏壁纸和桌面壁纸 一 壁纸服务的启动 壁纸服务WallpaperManagerService中 有一个内部类LifeCycle继承自SystemService SystemServer在启
  • 数据结构——C++中实现栈链(含完整代码)

    栈链相关代码 1 向栈顶插入元素 2 删除栈顶元素 3 判断栈是否为空 4 读取栈顶元素 0 退出程序 栈其实就是一个特殊的线性表 输入输出只能在一端 基于这一特性完成栈链的相关操作 注意事项 由于插入和删除操作只可以在一端 链表头部 所以
  • Atcoder Beginner Contest 044

    C C Tak and Cards 我一开始想的是先从小到大排个序 然后分情况 先从左往右一个数一个数枚举 如果等于ave 1 就res 如果大于ave 1 就说明1个数的没有了 然后从左到右两个数两个数枚举 如果等于ave 2 就res
  • 游戏外挂怎么做?

    文章目录 1 什么是游戏外挂 2 外挂的分类及实现原理 2 1 辅助类外挂 2 2 专用插件类外挂 2 3 通用工具 2 4 内存修改器 2 5 变速器 2 6 按键精灵 2 7 模拟器 2 8 破解版 转载自 Anti Cheat Exp
  • java TRC20

    直接上代码 创建地址 离线 private static SecureRandom random new SecureRandom 具体方法 public static Map
  • 15-数据结构-二叉树的遍历,递归和非递归

    简介 本文主要是代码实现 二叉树遍历 递归和非递归 用栈 主要为了好理解 直接在代码处 加了详细注释 方便复习和后期默写 主要了解其基本思想 为后期熟练应用打基础 遍历的意义 就是为了实现在二叉树上 进行各种操作 给每个结点都光顾到位 到根
  • C语言判断是否到达文件末尾

    血的教训 判断文件是否读到末尾的时候 使用 while fgets 不要用 while feof fgets 不然回车符弄死人
  • Pixhawk之姿态解算篇(2)_mahony算法分析

    一 开篇 还是没能进入到源码部分研究 对姿态解算过程太过于模糊 所以主要开始研究一下关于姿态解算的过程和实现 本篇博文主要是以mahony的算法为基础理解姿态解算的过程 主要参考的论文就是William Premerlani and Pau
  • linux创建文件的方法

    linux创建文件可以通过以下六个方式来完成 gt 标准重定向符允许我们创建一个 0KB 的空文件 touch 如果文件不存在的话 touch 命令将会创建一个 0KB 的空文件 echo 通过一个参数显示文本的某行 printf 用于显示
  • python基础学习--基础

    一 基础知识 1 1 基础语法及编码规范 1 定义变量加if Python 通常是一行写完一条语句 但如果语句很长 我们可以使用反斜杠 来实现多行语句sad total item one item two item three item f
  • 二极管(一):反向恢复时间

    一 反向恢复过程 在图1所示的二极管电路中 加入一个如图2所示的输入电压 即在 0 时间内 输入为 二极管导通 电路中有电流流过 假设二极管的正向压降为 当 远大于 时 可忽略不计 如果在 时刻 输入 突然从 变为 在理想情况下 二极管将即
  • 一文让你彻底了解Linux内核文件系统(大总结)

    一 文件系统特点 文件系统要有严格的组织形式 使得文件能够以块为单位进行存储 文件系统中也要有索引区 用来方便查找一个文件分成的多个块都存放在了什么位置 如果文件系统中有的文件是热点文件 近期经常被读取和写入 文件系统应该有缓存层 文件应该
  • 一百零八、Kettle采集Kafka数据到HDFS(踩坑,亲测有效)

    Kafka到HDFS 除了用Kafka API和flume之外 还可以用kettle 最大优点是不用写代码 版本 Kettle版本 8 2 Hadoop版本 3 1 3 前提 详情请看鄙人的一百零一 Kettle8 2 0连接Hive3 1