我在dataproc集群上运行pyspark,它有4个节点,每个节点有2个内核和8gbram。我有一个包含单词列表的列的数据框。我将此列分解,并使用-
df.groupBy("exploded_col").count()
爆炸前,大约有7800万排。但是,运行上述代码花费的时间太长(超过4小时)。为什么Spark要花很长时间?我对spark还是个新手,所以我还没有完全了解处理海量数据的适当设置。
sparkcontext有以下设置
enter code here
SparkSession.builder \
.appName("Spark NLP Licensed") \
.master("yarn") \
.config("spark.jars.packages", "com.johnsnowlabs.nlp:spark-nlp_2.11:2.5.1")
spark.conf.set("spark.sql.shuffle.partitions",20)
spark.conf.set("spark.num.executors",100)
spark.conf.set("spark.executor.cores",1)
spark.conf.set("spark.sql.files.ignoreCorruptFiles", "true")
我甚至将“spark.sql.shuffle.partitions”设置为2001,但这也不起作用。请帮忙。
1条答案
按热度按时间h7appiyu1#
性能不佳的主要原因是groupby通常会导致执行者之间的数据混乱。您可以使用内置的spark函数
countDistinct
以这种方式: