Для некоторого фона я пытаюсь сопоставить строки в одном кадре данных (df1
) с аналогичными строками в другом кадре данных (df2
).Я хочу в итоге получить фрейм данных, который имеет каждую строку из df1
и копию строк df2
для каждой строки.
Например, у меня есть 2 фрейма данных, созданных так:
df1 df2
+-----+ +-----+
|value| |value|
+-----+ +-----+
| 0| | 2|
| 1| | 3|
+-----+ +-----+
(это pyspark.sql.dataframe.DataFrame
фреймы данных)
Конечный фрейм данных должен выглядеть следующим образом:
+-----+
|value|
+-----+
| 0| <- from df1
| 2| <- clone of df2
| 3|
| 1| <- from df1
| 2| <- clone of df2
| 3|
+-----+
Я пытаюсь создать этот фрейм данных с помощью карты и объединения.Первым шагом, который я попытался, было создать список дубликатов df2
, который я мог бы затем объединить с df1
, чтобы создать желаемый фрейм данных.
def foo(row):
return df2.limit(2)
listOfCopies = df1.rdd.map(foo)
print(listOfCopies.take(2))
Я ожидал, что вывод listOfCopies.take(2)
будет списком из 2-х фреймов данных, однако вместо этого я получаю ошибку PicklingError: Could not serialize object: TypeError: 'JavaPackage' object is not callable
Что я здесь не так делаю?