【发布时间】:2021-08-31 05:37:44
【问题描述】:
我正在对具有 minhash jaccard 相似性列的 pyspark 数据帧执行简单的过滤操作。
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 个。
我应该减少分区的数量吗?有没有其他解决方案可以减少计算时间?
【问题讨论】:
标签: python pyspark databricks