我正在对一个pyspark dataframe执行一个简单的过滤操作,它有一个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个。
我应该减少分区的数量吗?是否有其他解决方案可以减少计算时间?
发布于 2021-08-30 21:37:44
通过将群集升级到c5 2x large与m4 large,解决了此问题。
https://stackoverflow.com/questions/68989023
复制相似问题