pyspark groupby和count太慢

vcirk6k6  于 2021-05-27  发布在  Spark
关注(0)|答案(1)|浏览(1400)

我在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,但这也不起作用。请帮忙。

h7appiyu

h7appiyu1#

性能不佳的主要原因是groupby通常会导致执行者之间的数据混乱。您可以使用内置的spark函数 countDistinct 以这种方式:

from spark.sql.functions import countDistinct
df.agg(countDistinct("exploded_col"))

相关问题