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的更多相关文章

  1. python第五十二课--自定义异常类

    myexception.py ''' 实现自定义异常类: ''' class MyException(Exception): def __init__(self,msg): super().__ini ...

  2. JAVA学习第五十二课 — IO流(六)File对象

    File类 用来给文件或者目录封装成对象 方便对文件与目录的属性信息进行操作 File对象能够作为參数传递给流的构造函数 一.构造函数和分隔符 public static void FileDemo( ...

  3. GPU 编程入门到精通(五)之 GPU 程序优化进阶

    博主因为工作其中的须要,開始学习 GPU 上面的编程,主要涉及到的是基于 GPU 的深度学习方面的知识.鉴于之前没有接触过 GPU 编程.因此在这里特地学习一下 GPU 上面的编程. 有志同道合的小伙 ...

  4. Gradle 1.12用户指南翻译——第五十二章. Maven 插件

    本文由CSDN博客貌似掉线翻译,其他章节的翻译请参见:http://blog.csdn.net/column/details/gradle-translation.html翻译项目请关注Github上 ...

  5. Java进阶(五十二)利用LOG4J生成服务日志

    Java进阶(五十二)利用LOG4J生成服务日志 前言 由于论文写作需求,需要进行流程挖掘.前提是需要有真实的事件日志数据.真实的事件日志数据可以用来发现.监控和提升业务流程. 为了获得真实的事件日志 ...

  6. SQL注入之Sqli-labs系列第五十关,第五十一关,第五十二关,第五十三关(ORDER BY堆叠注入)

    0x1第五十关 源码中使用的mysqli_multi_query()函数,而之前使用的是mysqli_query(),区别在于mysqli_multi_query()可以执行多个sql语句,而mysq ...

  7. “全栈2019”Java第五十二章:继承与初始化详解

    难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第 ...

  8. 《手把手教你》系列技巧篇(五十二)-java+ selenium自动化测试-处理面包屑(详细教程)

    1.简介 面包屑(Breadcrumb),又称面包屑导航(BreadcrumbNavigation)这个概念来自童话故事"汉赛尔和格莱特",当汉赛尔和格莱特穿过森林时,不小心迷路了 ...

  9. Bristol大学密码学博士生的五十二个知识点

    Bristol大学密码学博士生的五十二个知识点 这个系列,是Bristol大学的密码安全工作组为密码学和信息安全相关的博士准备了52个基本知识点. 原地址:http://bristolcrypto.b ...

  10. NeHe OpenGL教程 第四十二课:多重视口

    转自[翻译]NeHe OpenGL 教程 前言 声明,此 NeHe OpenGL教程系列文章由51博客yarin翻译(2010-08-19),本博客为转载并稍加整理与修改.对NeHe的OpenGL管线 ...

随机推荐

  1. 【c++】类valarray介绍

    valarray类用于处理数组中的数值,如将所有元素相加,找出最大.最小值,数组长度. 如何使用valarray类: 1.首先需要声明头文件        #include<valarray&g ...

  2. 阿里云PolarDB开源数据库社区与 Tapdata 联合共建开放数据技术生态

    ​简介:近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态. 近日,阿里云PolarDB开源数据库社区宣布将与 Tapdata 联合共建开放数据技术生态.在此之 ...

  3. 大数据时代下的App数据隐私安全

    ​简介:随着信息技术快速发展,大数据为我们带来信息共享.便捷生活的同时,还存在着数据安全问题,主流商业模式下APP面临新的挑战.工信部持续开展APP侵权整治活动,进行了了六批次集中抽检,检查了76万款 ...

  4. 揭秘远程证明架构EAA:机密容器安全部署的最后一环 | 龙蜥技术

    ​简介:如果需要在云上 HW-TEE 环境里启动一个加密容器,如何在启动过程中获取容器的解密密钥? ​ 文 / 周亮, 云原生机密计算 SIG 核心成员. 在云原生场景下,基于HW-TEE(如Inte ...

  5. [FAQ] Python的虚拟环境和包管理

      1. 创建虚拟环境 $ python -m venv test-env 2. 激活虚拟环境 windows:tutorial-env\Scripts\activate (powershell: . ...

  6. 从右边开始寻找整数的第k位

    从右边开始寻找整数的第k位 Implement match_k, which takes in an integer k and returns a function that takes in a ...

  7. dotnet 读 WPF 源代码笔记 为什么加上 BooleanBoxes 类

    在 WPF 框架,为什么需要定义一个 BooleanBoxes 类.为什么在 D3DImage 的 Callback 方法里面,传入的是 object 对象,却能被转换为布尔.本文将告诉大家为什么需要 ...

  8. dockerfile构建镜像常用命令

    一.什么是dockerfile Dockerfile是一个包含用于组合映像的命令的文本文档.可以使用在命令行中调用任何命令. Docker通过读取Dockerfile中的指令自动生成映像. docke ...

  9. vue首次缓存判断

    在向本地缓存存值前,判断localstory是否已经存在某个属性,没有就正常存,有就替换掉 created(){ if(localStorage.getItem("属性名") != ...

  10. 快速了解Django:核心概念解析与实践指南

    title: 快速了解Django:核心概念解析与实践指南 date: 2024/5/1 20:31:41 updated: 2024/5/1 20:31:41 categories: 后端开发 ta ...