kettle从入门到精通 第五十二课 ETL之kettle Avro output
1、上一节课我们学习了avro input,本节课我们一起学习下avro out步骤。
本节课通过json input 加载json文件,通过avro out 生成avro二进制文件,写日志步骤打印日志。将json input、avro output、写日志三个步骤拖到画布,然后连线,如下图所示:
json input 步骤不在过多讲解,不了解的可以学习kettle从入门到精通 第八课 kettle JSON输入

2、Avro output步骤将PDI数据流中的数据序列化为Avro二进制或JSON格式,然后写入文件。
这个输出步骤创建了以下文件:
1). 包含Avro格式输出数据的文件
2). 由此步骤中字段定义的Avro模式文件

Step name:自定义步骤名称
Forder/File name:指定文件或文件夹的位置和名称。您还可以单击浏览按钮导航到目标avro文件或avro文件所在文件夹。
Overwrite existing output file:选择覆盖具有相同文件名和扩展名的现有文件。
Fields:
Avro path:字段的名称将在Avro数据和模式文件中显示。
Name:PDI字段的名称。
Avro type:定义字段的Avro数据类型。可以通过下拉方式进行选择。
Precision:仅适用于Decimal Avro类型,数字中的总位数。默认值为10。
Scale:仅适用于Decimal Avro类型,小数点后的位数。默认值为0。
Default value:字段的默认值,如果为空或为null。
Null:指定字段是否可以包含空值。可以选择Yes和No。
如下时PDI type和Avro type的映射对应关系:
| PDI Type | Avro Type |
|---|---|
| InetAddress | String |
| String | String |
| TimeStamp | TimeStamp |
| Binary | Bytes |
| BigNumber | Decimal |
| Boolean | Boolean |
| Date | Date |
| Integer | Long |
| Number | Double |
注:为了避免转换失败,请确保默认值字段包含所有字段的值,其中空值设置为否。
3、Schema选项卡,如下图所示:

File name:指定完整的URL,用于写入Avro模式文件。URL的格式可能根据文件系统类型不同而有所不同。您也可以点击“浏览”以导航到您文件系统上的模式文件。如果模式文件已存在,则会被覆盖。如果您没有为输出指定单独的模式文件,PDI将在Avro数据文件中写入嵌入式模式。
Namespace:命名空间,定义模式的“完整名称”(例如,对于示例,为 example.avro).
Record name:指定Avro记录的名称(例如,myAvro)。
Doc value:指定为模式提供的文档,也就是备注。
4、Options 选项卡,如下图所示:

Compression:指定用于在Avro输出文件中压缩数据块的以下编解码器之一:
- None:不使用压缩(默认)。
- Deflate:数据块使用RFC 1951中指定的deflate算法编写,通常使用zlib库实现。
- Snappy:数据块使用Google的Snappy压缩库编写,并在每个块中跟随未压缩数据的4字节大端CRC32校验和。
Include date in filename:将系统生成文件的系统日期添加到默认格式yyyyMMdd(例如20240405)的输出文件名中。
Include time in filename:将系统生成文件的系统时间添加到默认格式HHmmss(例如235959)的输出文件名中。
Specify date time format:"从下拉列表中可用的选项中选择一个不同的日期时间格式,添加到输出文件名中。"
5、生成文件

avro schema 文件

avro 二进制文件


kettle从入门到精通 第五十二课 ETL之kettle Avro output的更多相关文章
- python第五十二课--自定义异常类
myexception.py ''' 实现自定义异常类: ''' class MyException(Exception): def __init__(self,msg): super().__ini ...
- JAVA学习第五十二课 — IO流(六)File对象
File类 用来给文件或者目录封装成对象 方便对文件与目录的属性信息进行操作 File对象能够作为參数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo( ...
- GPU 编程入门到精通(五)之 GPU 程序优化进阶
博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识.鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程. 有志同道合的小伙 ...
- Gradle 1.12用户指南翻译——第五十二章. Maven 插件
本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...
- Java进阶(五十二)利用LOG4J生成服务日志
Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...
- SQL注入之Sqli-labs系列第五十关,第五十一关,第五十二关,第五十三关(ORDER BY堆叠注入)
0x1第五十关 源码中使用的mysqli_multi_query()函数,而之前使用的是mysqli_query(),区别在于mysqli_multi_query()可以执行多个sql语句,而mysq ...
- “全栈2019”Java第五十二章:继承与初始化详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...
- 《手把手教你》系列技巧篇(五十二)-java+ selenium自动化测试-处理面包屑(详细教程)
1.简介 面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了 ...
- Bristol大学密码学博士生的五十二个知识点
Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...
- NeHe OpenGL教程 第四十二课:多重视口
转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...
随机推荐
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-39-highlight() 方法之追踪定位
1.简介 在之前的文章中宏哥讲解和分享了,为了看清自动化测试的步骤,通过JavaScript添加高亮颜色,就可以清楚的看到执行步骤了.在学习和实践Playwright的过程中,偶然发现了使用Playw ...
- 【数学】主成分分析(PCA)的详细深度推导过程
Based on Deep Learning (2017, MIT) book. 本文基于Deep Learning (2017, MIT),推导过程补全了所涉及的知识及书中推导过程中跳跃和省略的部分 ...
- Understand Abstraction and Interface
Foreword 抽象和接口是Java中的两个关键字,也是两种最基本的优化软件项目手段.为什么说它们是一种优化项目的手段? 人分三六九等,不同等级的人,所接触的事和处理的事是不一样的.同理,项目也分大 ...
- 3分钟创建Serverless Job 定时获取新闻热搜
简介: 7月25号-8月2号工作日期间,完成场景搭建,即可获得夏日清凉小风扇(每日限量)和阿里云代金券! 云起实验室,由阿里云提供的零门槛云上实践平台.一键预置实验环境,提供详细的实验手册指导,快速体 ...
- DataFunTalk:阿里建设一站式实时数仓的经验分享
简介: 本文内容整理于阿里资深技术专家姜伟华在DataFunTalk上的演讲,为大家介绍阿里巴巴基于一站式实时数仓Hologres建设实时数仓的经验和解决方案. 导读:大数据计算正从规模化走向实时化, ...
- 云小蜜 Dubbo3.0 实践:从微服务迁移上云到流量治理
简介:阿里云-达摩院-云小蜜对话机器人产品基于深度机器学习技术.自然语言理解技术和对话管理技术,为企业提供多引擎.多渠道.多模态的对话机器人服务.17 年云小蜜对话机器人在公共云开始公测,同期在混合 ...
- 双龙贺岁,龙蜥 LoongArch GA 版正式发布
简介:Anolis OS 8.4 LoongArch 正式版发布产品包括 ISO.软件仓库.虚拟机镜像.容器镜像. 简介 继 Anolis OS LoongArch 预览版发布后,现迎来龙蜥 ...
- Python编程的若干个经典小技巧
1. 原地交换两个数字 Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例: x,y= 10,20 print(x,y) x,y= y,x print(x,y) # ...
- Unity3D OpenVR 虚拟现实 保龄球打砖块游戏开发
据说水哥买了 Valve Index 设备,既然这个设备这么贵,不开发点有(zhi)趣(zhang)游戏就感觉对不起这个设备.本文将来开始着手开发一个可玩性不大,观赏性极强的保龄球打砖块游戏.这仅仅只 ...
- WPF dotnet core 的 Blend SDK Behaviors 库
之前版本是通过安装 Blend SDK 支持 Behaviors 库的,但是这个方法都是通过引用 dll 的方式,不够优雅.在升级到 dotnet core 3.0 的时候就需要使用 WPF 官方团队 ...