在云 Datafusion 中使用 Wrangler 将 Avro 文件转换为 JSON
Transform Avro file with Wrangler into JSON in cloud Datafusion
我尝试读取 Avro 文件,使用 Wrangler 进行基本转换(删除名称为 Ben 的记录)并将结果作为 JSON 文件写入 google 云存储。
Avro 文件具有以下架构:
{
“类型”:“记录”,
"name": "etlSchemaBody",
“领域”:[
{
“类型”:“字符串”,
“名字”:“名字”
}
]
}
wrangler 中的转换如下:
transformation
以下是 JSON 文件的输出架构:
output schema
当我 运行 管道时,它 运行 成功并且 JSON 文件在云存储中创建。但是 JSON 输出是空的。
尝试预览 运行 时,我收到以下消息:
warning message
为什么 gcloud 存储中的 JSON 输出文件是空的?
使用Wrangler进行转换时,GCS源的默认值为format: text
和body: string
(数据类型);但是,要在 Wrangler 中正确使用 Avro 文件,您需要更改它,您需要将格式设置为 blob
并将正文数据类型设置为 bytes
,如下所示:
之后,管道的预览应该会生成输出记录。接下来你可以看到我的工作示例:
- Sample data
- Transformations
- Input records preview for GCS sink(最终输出)
编辑:
如前所述,如果要在 Wrangler 中将文件解析为 Avro,则需要将 format: blob
和输出模式设置为 body: bytes
,因为它需要文件的内容二进制格式。
另一方面,如果您只想应用过滤器(在 Wrangler 中),您可以执行以下操作:
- 使用
format: avro
、see img、 打开文件
- 根据 Avro 文件的字段设置输出模式,在本例中
name
数据类型 string
,see img。
- 仅在 Wrangler 上使用过滤器(此处不解析为 Avro),see img。
而且这样你也可以获得想要的result.
我尝试读取 Avro 文件,使用 Wrangler 进行基本转换(删除名称为 Ben 的记录)并将结果作为 JSON 文件写入 google 云存储。 Avro 文件具有以下架构:
{ “类型”:“记录”, "name": "etlSchemaBody", “领域”:[ { “类型”:“字符串”, “名字”:“名字” } ] }
wrangler 中的转换如下: transformation
以下是 JSON 文件的输出架构: output schema
当我 运行 管道时,它 运行 成功并且 JSON 文件在云存储中创建。但是 JSON 输出是空的。 尝试预览 运行 时,我收到以下消息: warning message
为什么 gcloud 存储中的 JSON 输出文件是空的?
使用Wrangler进行转换时,GCS源的默认值为format: text
和body: string
(数据类型);但是,要在 Wrangler 中正确使用 Avro 文件,您需要更改它,您需要将格式设置为 blob
并将正文数据类型设置为 bytes
,如下所示:
之后,管道的预览应该会生成输出记录。接下来你可以看到我的工作示例:
- Sample data
- Transformations
- Input records preview for GCS sink(最终输出)
编辑:
如前所述,如果要在 Wrangler 中将文件解析为 Avro,则需要将 format: blob
和输出模式设置为 body: bytes
,因为它需要文件的内容二进制格式。
另一方面,如果您只想应用过滤器(在 Wrangler 中),您可以执行以下操作:
- 使用
format: avro
、see img、 打开文件
- 根据 Avro 文件的字段设置输出模式,在本例中
name
数据类型string
,see img。 - 仅在 Wrangler 上使用过滤器(此处不解析为 Avro),see img。
而且这样你也可以获得想要的result.