极慢火花过滤器

2024-09-21 05:33:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在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 这只需要几秒钟就可以完成

此head after filter操作未在运行时间的15分钟内完成。我已经检查了数据帧的分区数量,它只有4个

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


Tags: 数据indfforsize时间filterarray

热门问题