2016-05-12 2 views
0

У меня есть два кадра данных, которые имеют список как столбец. Оба блока данных идентичны, за исключением того факта, что порядок списка отличается в кадрах данных.
например. Схема: (текст идентификатор, название списка '<' текст>)
df1: (5, WrappedArray (азбука, PQR, хуг))
df2: (5, WrappedArray (азбука, хуг, PQR))
Когда я use intersect я не получаю эту запись в результатах. Как я могу получить пересечение таких записей?Перекрестные данные, которые имеют столбец списка

+0

В качестве альтернативы существует ли способ сортировки списка в кадре данных? –

ответ

0

Я думаю, вы правы, что самым простым способом было бы отсортировать столбец списка.

val sortListFunc = udf((inputList: WrappedArray[String]) => { 
    inputList.sorted 
}) 

val df1Sorted = df1 
    .withColumn("name_sorted",sortListFunc(col("name")) 
    .select($"id","name_sorted".as("name")) 

val df2Sorted = df2 
    .withColumn("name_sorted",sortListFunc(col("name")) 
    .select($"id","name_sorted".as("name")) 

Тогда вы должны быть в состоянии присоединиться или пересечься.

Смежные вопросы