使用Wrangler将Avro文件转换为Cloud Datafusion中的JSON

问题描述

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

{ “ type”:“记录”, “ name”:“ etlSchemaBody”, “字段”:[ { “ type”:“ string”, “ name”:“名称” } ] }

牧马人的转变如下: transformation

以下是JSON文件输出架构: output schema

当我运行管道时,它成功运行,并且在云存储中创建了JSON文件。但是JSON输出为空。 尝试预览运行时,出现以下消息: warning message

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

解决方法

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

format

body data type

之后,管道的预览将产生输出记录。您可以在下面看到我的工作示例:

编辑:

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

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

  • 使用format: avrosee img打开文件。
  • 根据您的Avro文件具有的字段(在本例中为name,数据类型为see img)设置输出模式。
  • 仅在Wrangler上使用过滤器(此处未解析到Avro)see img

这样,您还可以获得所需的result