Я пытаюсь использовать pyspark для дедупликации базы данных, и как часть конвейера я хочу создать фрейм данных из двух идентичных левого и правого фреймов данных. У них есть общий индекс.
Первоначально я был ленив и просто использовал CROSS JOIN, но это приводит к дублированию объединений (слева направо - то же, что справа налево). Но теперь мне нужно немного оптимизировать код, и я задаюсь вопросом, как лучше всего достичь такого типа соединения. Кто-нибудь может предложить что-нибудь?
l_df = spark.createDataFrame([('A',), ('B',), ('C',), ('D',)], ['l_idx'])
r_df = spark.createDataFrame([('A',), ('B',), ('C',), ('D',)], ['r_idx'])
l_df.createOrReplaceTempView('l_df')
r_df.createOrReplaceTempView('r_df')
block_df = spark.sql('''
SELECT *
FROM l_df
CROSS JOIN r_df
''')
block_df.show()
В результате получаются все комбинации.
Однако я ищу ..
A B
A C
A D
B C
B D
C D
только
Спасибо, JXC!
Решено с вашим предложением!