首页 > 解决方案 > 使用 Wrangler 将 Avro 文件转换为云 Datafusion 中的 JSON

问题描述

我尝试读取 Avro 文件,使用 Wrangler 进行基本转换(删除名称 = Ben 的记录)并将结果作为 JSON 文件写入谷歌云存储。Avro 文件具有以下架构:

{“类型”:“记录”,“名称”:“etlSchemaBody”,“字段”:[{“类型”:“字符串”,“名称”:“名称”}]}

wrangler 中的 转换如下:

以下是 JSON 文件的输出模式: 输出模式

当我运行管道时,它会成功运行并在云存储中创建 JSON 文件。但 JSON 输出为空。尝试预览运行时,我收到以下消息: 警告消息

为什么 gcloud 存储中的 JSON 输出文件为空?

标签: jsonavrogoogle-cloud-data-fusion

解决方案


使用 Wrangler 进行转换时,GCS 源的默认值为format: textand body: string(数据类型);但是,要在 Wrangler 中正确使用 Avro 文件,您需要对其进行更改,您需要将格式设置为blob并将正文数据类型设置为bytes,如下所示:

格式

正文数据类型

之后,您的管道的预览应该会生成输出记录。接下来你可以看到我的工作示例:

编辑:

如前所述,您需要设置format: blob和输出模式,就好像您想在 Wrangler 中将文件解析为 Avro,因为它需要二进制格式的文件内容。body: bytes

另一方面,如果您只想应用过滤器(在 Wrangler 中),您可以执行以下操作:

  • 使用 打开文件format: avro请参见 img
  • 根据您的 Avro 文件具有的字段设置输出模式,在本例name中为string数据类型,请参阅 img
  • 仅在 Wrangler 上使用过滤器(此处不解析为 Avro),请参阅 img

而且这样你也可以得到想要的结果


推荐阅读