性能:Google Dataflow 将 avro 文件写入 GCS

Posted

技术标签:

【中文标题】性能:Google Dataflow 将 avro 文件写入 GCS【英文标题】:Performance: Google Dataflow writes avro file to GCS 【发布时间】:2019-02-18 05:16:51 【问题描述】:

我正在研究 Google Dataflow,它从 pubsub 中提取数据,转换为 avro,然后将它们写入 GCS。 根据监控页面,瓶颈是将 avro 文件写入 GCS(花费总执行时间的 70-80%)。

我用

n1-standard-8 的 10 名工人 10 numShards 5 秒固定窗口 GCS 和 Dataflow 端点的区域相同。

那么性能大约是每秒 200,000 个元素。 在这种情况下它是否很快,或者我能做些什么来让它更快? (我真的很想!)

谢谢

【问题讨论】:

【参考方案1】:

您是否考虑过以specific convention 命名您的文件以优化读写访问?

为了保持较高的请求率,请避免使用顺序名称。使用完全随机的对象名称将为您提供最佳的负载分布。如果您想使用序列号或时间戳作为对象名称的一部分,请通过在序列号或时间戳之前添加一个哈希值来为对象名称引入随机性。

基本上,您需要遵循与在 BigTable 中选择 RowKey 相同的规则。

【讨论】:

感谢您的回答 :) 我按照 GSC 文档的说明进行了尝试(将 md4 哈希放在文件名的开头)。但性能没有改变,总执行时间的份额保持不变。我和一个使用几乎相同工作流程的人交谈,性能几乎和我一样,所以也许这就是极限......

以上是关于性能:Google Dataflow 将 avro 文件写入 GCS的主要内容,如果未能解决你的问题,请参考以下文章

在 Dataflow Python 中从 PubSub 读取 AVRO 消息

SideInput I/O 会影响性能

Google-cloud-dataflow:无法通过带有“BigQueryDisposition.WRITE_TRUNCATE”的“WriteToBigQuery/BigQuerySink”将 jso

用于将 HLL_COUNT.INIT 提取到 BigQuery 的 Google DataFlow API

通过 Google Cloud Dataflow 将 PubSub 消息插入 BigQuery

Google Dataflow:根据条件仅将消息输出到 PubSub 主题之一