我正在使用在Dataproc集群上运行的Spark处理数据。我尝试过使集群更强大,增加了CPU和磁盘空间,但并没有太大帮助。我使用以下方法从BigQuery读取数据:
Dataset<Row> data = spark.read().format("bigquery")
.option("table","project.dataset.tablename")
.load()
.cache();
我使用.cache()
是因为我多次使用data
。
我也尝试过使用.text()
而不是.csv()
,但并没有得到改善。
唯一有用的是减少数据中的记录数。
我可以进行哪些更改以使其运行更快?
data.select("column1","column2")
.write()
.mode("append")
.partitionBy("column1")
.csv("gs://bucket/folder");
您正在使用多少工人和主人?您正在处理的数据量是多少?
对于更高性能的群集,也应使用PD-SSD磁盘。 SSD永久磁盘专为具有高随机IOPS率的工作负载而设计,这可能会为某些Spark和Hadoop工作负载带来巨大的好处。
也..您是否考虑过数据流?它的启动时间更少,并且可以随数据量自动缩放,您的etl过程似乎很简单,是否有任何理由要使用dataproc?