极其缓慢的 pyspark 过滤器

Extremely slow pyspark filter

我在 pyspark 数据帧上执行简单的过滤操作,它有一个 minhash jaccard 相似度列。

minhash_sig = ['123', '345']

minhash_sig = [str(x) for x in minhash.signature(doc)]


df = spark.createDataFrame(....) # --dataframe with 100,000 rows
# columns are id, and minhash_array(arrays of minhash signatures).
df = df.withColumn('minhash_array0', array([lit(i) for i in minhash_sig]))
intersect = size(array_intersect("minhash_array0", "minhash_array"))
union = size(array_union("minhash_array0", "minhash_array"))
df = df.withColumn('minhash_sim',intersect/union)

df = df.filter(df.column > .5)
df.head()

我试过了 df.head() before the filter 这只需要几秒钟就可以完成。

这个头部过滤操作在运行时的 15 分钟内没有完成。我检查了数据帧的分区数,只有 4 个。

我应该减少分区数量吗?是否有任何其他解决方案来减少计算时间?

能够通过将集群升级到 c5 2x large vs m4 large 来解决问题。