Google cloud platform 在200-1000台服务器之间建立一个流并快速创建一个文件的想法

Google cloud platform 在200-1000台服务器之间建立一个流并快速创建一个文件的想法,google-cloud-platform,google-cloud-dataflow,apache-beam,apache-beam-io,Google Cloud Platform,Google Cloud Dataflow,Apache Beam,Apache Beam Io,我们在谷歌云平台,所以技术方面会有一个很好的胜利。我们有一个巨大的文件,数据流在输入端进行缩放,以很好地分解文件。然而,在这之后,它通过许多系统、微服务1传输到dataconnectors,将相关数据传输到ML,最后传输到最终的微服务 由于最后一个阶段可能是大约200-1000台服务器,这取决于负载,我们如何接收所有传入的请求(是的,我们在每个请求中都附加了一个文件id,包括一个customerRequestId,以防文件被多次删除)。我们只需要在输出时将具有相同customerRequestI

我们在谷歌云平台,所以技术方面会有一个很好的胜利。我们有一个巨大的文件,数据流在输入端进行缩放,以很好地分解文件。然而,在这之后,它通过许多系统、微服务1传输到dataconnectors,将相关数据传输到ML,最后传输到最终的微服务

由于最后一个阶段可能是大约200-1000台服务器,这取决于负载,我们如何接收所有传入的请求(是的,我们在每个请求中都附加了一个文件id,包括一个customerRequestId,以防文件被多次删除)。我们只需要在输出时将具有相同customerRequestId的每一行写入相同的文件

最好的方法是什么?生成的文件几乎总是csv文件

有什么想法或好的选择我可以探索?我想知道dataflow是否擅长并行地摄取和读取一个巨大的文件,它是否擅长在一个节点集群上接收各种输入(而不是一个会使我们陷入瓶颈的节点)

编辑:我似乎记得hdfs有跨节点分区的文件,我认为可以以某种方式由多个节点同时编写(a) 每个分区的节点数)。有人知道谷歌云存储文件也是这样吗?在谷歌云存储中,有没有一种方法可以让200个节点写入同一文件的200个分区,使其全部为1个文件

编辑2:

我看到有一个流式发布/订阅到bigquery选项,可以作为此列表中的一个阶段完成:

然而,在这个列表中,没有一个批量bigquery到csv(我们的客户想要的)。我确实看到了一个对拼花地板的大查询选项,尽管在这里:

不过我更愿意直接去csv。有办法吗

谢谢,
迪恩

你的案子很复杂,很难(而且费用昂贵)重现。我的第一个想法是使用BigQuery。使用数据流接收同一表中的所有数据

然后,创建一个临时表,其中只包含要导出为CSV的数据,如下所示

CREATE TABLE `myproject.mydataset.mytemptable`
OPTIONS(
  expiration_timestamp=TIMESTAMP_ADD(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
) AS
SELECT ....

然后去。如果表小于1Gb,则只生成一个CSV


如果您需要协调这些步骤,可以使用

非常感谢@guillaume blaquiere。这很有用。我们将进行调查。“若表小于1Gb,则只有1个CSV”->这是BigQuery限制吗?我不确定,但我希望云存储可能像Hadoop HDFS一样,我可以写入同一文件的多个分区,而在GUI中它看起来只有一个文件?GCS类似于HDFS,但具有更多的隐藏功能。内部可能(当然)是这样,但没有API可以控制这种低级别访问。关于BigQuery,这并不是一个限制,我认为切分对于性能来说是donesweet,非常感谢!