我们目前的流程有些笨拙,我们从数据库中获取了批处理的CSV输出,将其转换为json并流式传输到pub / sub。
这很麻烦,因为json中的每个元素都将采用STRING格式,并且当我们尝试写入bigquery时,它将失败,除非从Java内部进行类型转换。
是否存在任何可用于小批量的首选类型化平面文件格式,以便在使用pub / sub进行传输时,我们将类型信息保留在记录级别?
答案 0 :(得分:3)
取决于您的管道设置的准确程度。
通常,PubsubIO
有几种读取/写入消息的方式:
PubsubIO.readAvros()
读取具有Avros有效负载的消息并解析对象; PubsubIO.readProtos()
对具有Protobuf有效负载的消息执行相同的操作; PubsubIO.readMessages()
为您提供了未解析的原始字节; Avros和Protos可以帮助您简化Pubsub的序列化/反序列化步骤,从而避免将所有内容放入字符串中。
但是,正如Yurci所述,您仍然需要将从Pubsub消息到TableRows的有效负载转换为write them to BigQuery。