Google cloud dataflow 从dataflow到BigQuery的流式发布/订阅的首选数据格式是什么?

Google cloud dataflow 从dataflow到BigQuery的流式发布/订阅的首选数据格式是什么?,google-cloud-dataflow,apache-beam,google-cloud-pubsub,Google Cloud Dataflow,Apache Beam,Google Cloud Pubsub,我们的过程目前有点笨拙,我们从数据库获得成批的CSV输出,这些输出被转换成json并流式传输到发布/订阅 这很麻烦,因为json中的每个元素都是字符串格式,当我们尝试写入bigquery时,它会失败,除非Java中有类型转换 是否有任何首选的类型化平面文件格式可用于小批量,以便在使用pub/sub传输时,将类型信息保留在记录级别?取决于管道的设置方式 一般来说,PubsubIO有几种读/写消息的方法: 读取Avros有效负载的消息并解析对象 对Protobuf负载的消息执行相同的操作 为您提供

我们的过程目前有点笨拙,我们从数据库获得成批的CSV输出,这些输出被转换成json并流式传输到发布/订阅

这很麻烦,因为json中的每个元素都是字符串格式,当我们尝试写入bigquery时,它会失败,除非Java中有类型转换


是否有任何首选的类型化平面文件格式可用于小批量,以便在使用pub/sub传输时,将类型信息保留在记录级别?

取决于管道的设置方式

一般来说,
PubsubIO
有几种读/写消息的方法:

  • 读取Avros有效负载的消息并解析对象
  • 对Protobuf负载的消息执行相同的操作
  • 为您提供未经解析的原始字节
Avros和Protos可以帮助您简化Pubsub的序列化/反序列化步骤,以避免将所有内容放入字符串中


但是,正如Yurci所提到的,您仍然需要将从Pubsub消息到TableRows的有效负载转换为。

取决于管道的具体设置方式

一般来说,
PubsubIO
有几种读/写消息的方法:

  • 读取Avros有效负载的消息并解析对象
  • 对Protobuf负载的消息执行相同的操作
  • 为您提供未经解析的原始字节
Avros和Protos可以帮助您简化Pubsub的序列化/反序列化步骤,以避免将所有内容放入字符串中


但是,正如Yurci所提到的,您仍然需要将从Pubsub消息获得的有效负载转换为TableRows to。

您可以使用类中的readMessages方法来避免字符串转换。但是您仍然需要将发布/订阅消息转换为TableRow。您可以使用类中的readMessages方法来避免字符串转换。但您仍然需要将发布/订阅消息转换为TableRow。