在云 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: textbody: 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.