Avro Data Types
使用 输入数据工具 读取未压缩和 Deflate 压缩的 Avro 文件,并使用 输出数据工具 写入 Avro 文件。
输入
仅支持 Deflate 压缩。
支持 14 种原生 Avro 数据类型中的大多数。导入时的类型映射如下:
字符串:UTF-8 转换为 V_WString (UTF-16)
字节:保持为 Blob(必要时使用 Blob 工具进行转换)
整型:保持为 Int32
长整型:保持为 Int64
单精度:保持为单精度
双精度:保持为双精度
布尔:保持为 Bool
空:不支持
枚举型:转换为 String Equivalent
Union:Alteryx 支持两个子类型的联合。两个子类型必须相同(例如,都是整型或都是双精度),或者其中一个子类型必须为空。
Alteryx 字段类型是非空分支的类型(如果两个分支均为非空分支,则为两个分支的类型)。
如果非空分支处于活动状态,则 Alteryx 字段包含该值。
如果空分支处于活动状态,则 Alteryx 字段被设置为空。
无效联合将作为 JSON 导入到一个 V_WString 中(必要时使用 JSON 解析工具进行转换)。例如,以整型作为其活动分支的一个联合可以表示为“{"int":123}”。
定点数:保持为 Blob(必要时使用 Blob 工具进行转换)
这些 Avro 类型本身不受支持,但可以作为 JSON 导入到一个字符串中(必要时使用 JSON 解析工具 进行转换):
记录:例如,对于同时包含整型和字符串字段的记录,使用“{"SubField1":7,"SubField2":"Field2"}”。
数组:例如,“[1,2,3,4,5]”表示一个整型数组。
映射:例如,“{"Key1":Value1,"Key2":Value2}”表示一个字符串到双精度数的映射。
输出
写入 Avro 文件时,有 2 个选项:
启用压缩 (Deflate) :启用压缩会增加输出时间,但是对于较大的文件,也会减少网络时间。支持的压缩使用 DEFLATE 算法(本质上是 gzip),应当得到其他支持 Avro 的工具(如 Hive)的原生支持。
支持空值 :选择此选项会向 _all_ 字段写入具有一个空分支和一个有值分支的联合。如果 Alteryx 值为空,则输出的 Avro union 会选择其空分支,否则会选择其有值分支。
如果未选择此选项,所有输出字段都会按其原生 Avro 类型写入(非联合)。空的 Alteryx 字段会被写入默认值(例如,int32 字段写入 0,字符串字段写入空字符串)。
考虑使用 公式工具 处理具有“已知”值的空值,这样它们就可以在 Hadoop 中处理。
Alteryx 到 Avro 的类型映射如下:
Bool:保持为布尔值
字节、Int16、Int32:保持为整型(32 位)
Int64:保持为长整型(64 位)
单精度:保持为单精度
DateTime as Date, Time, DateTime
双精度:保持为双精度
定点十进制:转换为双精度数
字符串、V_String、日期、时间、日期时间:保持为字符串 (UTF-8)
WString、V_WString:转换为字符串 (UTF-8)
Blob、SpatialBlob:保持为字节