Java 为什么在Spark/Dataproc上运行这个需要这么长时间?

Java 为什么在Spark/Dataproc上运行这个需要这么长时间?,java,apache-spark,google-cloud-dataproc,Java,Apache Spark,Google Cloud Dataproc,我正在使用运行在Dataproc集群上的Spark处理数据。我尝试过让集群功能更强大,增加更多的CPU和磁盘空间,但没有多大帮助。我使用以下命令从BigQuery读取数据: Dataset data=spark.read().format(“bigquery”) .option(“表”、“项目.数据集.表名”) .load() .cache(); 我正在使用.cache(),因为我多次使用数据 我也尝试过使用.text()而不是.csv(),但没有改进 唯一有帮助的是减少了数据中的记录数量 我

我正在使用运行在Dataproc集群上的Spark处理数据。我尝试过让集群功能更强大,增加更多的CPU和磁盘空间,但没有多大帮助。我使用以下命令从BigQuery读取数据:

Dataset data=spark.read().format(“bigquery”)
.option(“表”、“项目.数据集.表名”)
.load()
.cache();
我正在使用
.cache()
,因为我多次使用
数据

我也尝试过使用
.text()
而不是
.csv()
,但没有改进

唯一有帮助的是减少了数据中的记录数量

我可以改变什么使它运行得更快

数据。选择(“第1列”、“第2列”)
.write()
.mode(“追加”)
.分割人(“第1栏”)
.csv(“gs://bucket/folder”);

您使用了多少工人和师傅?您正在处理的数据的大小是多少

此外,对于更高性能的群集,您应该使用PD-SSD磁盘。SSD持久磁盘是为具有高随机IOPS速率的工作负载而设计的,这可能会为某些Spark和Hadoop工作负载带来巨大的好处


还有。。你考虑过数据流吗?它具有较少的启动时间,并且随着数据量的增加而自动扩展,您的etl过程似乎足够简单,您使用dataproc有什么原因吗?

您使用了多少工人和主人?您正在处理的数据的大小是多少

此外,对于更高性能的群集,您应该使用PD-SSD磁盘。SSD持久磁盘是为具有高随机IOPS速率的工作负载而设计的,这可能会为某些Spark和Hadoop工作负载带来巨大的好处


还有。。你考虑过数据流吗?它的启动时间更短,并且随着数据量的增加而自动扩展,您的etl过程似乎很简单,您为什么要使用dataproc?

谢谢您的回复。我只是在研究数据流,但仍然需要弄清楚如何让它运行,以前从未使用过它。听起来很愚蠢,但我对Dataproc/Spark更熟悉,对Dataflow/Beam一点也不熟悉,所以我选择了Dataproc。我使用了1台主机和4个工人,所有16台vCPU,所有都有2TB的PD-SSD磁盘,因为它的速度已经很慢,大约1GB的数据。我想我会尽我所能尝试一下数据流。让我知道它是如何运行的!如果你曾经使用过ApacheBeam,基本上是:)这似乎是一个愚蠢的问题,但我有我的.jar文件,我如何将它放入数据流,它需要一个模板?你必须使用特定的maven目标,遵循本教程:-您可以看到他如何使用mvn exec:java使其在本地或数据流上运行:)还应该有一个其他插件/目标,您可以使用它创建模板并将其推送到gcs,以便直接在数据流(或通过api)中开始未来的运行,谢谢您回复我。我只是在研究数据流,但仍然需要弄清楚如何让它运行,以前从未使用过它。听起来很愚蠢,但我对Dataproc/Spark更熟悉,对Dataflow/Beam一点也不熟悉,所以我选择了Dataproc。我使用了1台主机和4个工人,所有16台vCPU,所有都有2TB的PD-SSD磁盘,因为它的速度已经很慢,大约1GB的数据。我想我会尽我所能尝试一下数据流。让我知道它是如何运行的!如果你曾经使用过ApacheBeam,基本上是:)这似乎是一个愚蠢的问题,但我有我的.jar文件,我如何将它放入数据流,它需要一个模板?你必须使用特定的maven目标,遵循本教程:-您可以看到他如何使用mvn exec:java使其在本地或数据流上运行:)还应该有一个其他插件/目标,您可以使用它创建模板并将其推送到gcs,以便直接在数据流(或通过api)中开始未来的运行