#python #apache-spark #pyspark #databricks #minhash
Вопрос:
У меня есть список minhash_sig = [‘112’, ‘223’], и я хотел бы найти сходство jaccard между этим списком и каждым элементом в столбце фрейма данных pyspark. К сожалению, я не могу этого сделать.
Я попытался использовать array_intersect, а также array_union, чтобы попытаться провести сравнение. Однако это не работает, так как я получаю сообщение Resolved attribute missing
.
Вот фрейм данных pyspark, который я создал до сих пор.
df = spark.createDataFrame(
[
(1, ['112','333']),
(2, ['112','223'])
],
["id", "minhash"] # add your column names here
)
minhash_sig = ['112', '223']
df2 = spark.createDataFrame([Row(c1=minhash_sig)])
А вот код, который я использовал, чтобы попытаться сравнить список с элементами столбца pyspark.
df.withColumn('minhash_sim',size(array_intersect(df2.c1, df.minhash)))
Кто-нибудь знает, как я могу провести это сравнение без этой ошибки?
Ответ №1:
столбец из df2 не будет известен df1, если вы не присоединитесь к ним и не создадите один объект, вы можете попытаться сначала соединить оба, а затем попробовать свой код:
df.crossJoin(df2).withColumn('minhash_sim',size(array_intersect("c1", "minhash")))
.show()
--- ---------- ---------- -----------
| id| minhash| c1|minhash_sim|
--- ---------- ---------- -----------
| 1|[112, 333]|[112, 223]| 1|
| 2|[112, 223]|[112, 223]| 2|
--- ---------- ---------- -----------