Scala: определение первичного ключа во фрейме данных

Можно ли определить первичный ключ при использовании фрейма данных? У меня есть два фрейма данных, которые я объединил по «ID». Теперь я хочу выбрать «Дата» и получить на выходе «ID» первичного ключа.

val join1 = df_2.join(df_3, df_3.col("ID") === df_2.col("APPLICATION2_ID")) 
val joinFinal = join1.join(df_1, df_1.col("ID") === join1.col("ID"))

person SFatima    schedule 19.01.2017    source источник
comment
DataFrames не имеют концепции первичного ключа, и то, что вы предлагаете, должно работать ... что именно вы пробовали, что не работает?   -  person Justin Pihony    schedule 20.01.2017
comment
val join1 = df_2.join (df_3, df_3.col (ID) === df_2.col (APPLICATION2_ID)) val joinFinal = join1.join (df_1, df_1.col (ID) === join1.col (ID)) У меня есть 3 фрейма данных, к которым я присоединился, и все фреймы данных имеют идентификатор столбца. Сейчас пытаюсь произвести трансформацию. val df_Move = joinFinal.select (ID, Дата). Однако из-за нескольких столбцов с именем ID я получаю неоднозначную ошибку идентификатора.   -  person SFatima    schedule 20.01.2017
comment
@SFatima А в чем ошибка?   -  person T. Gawęda    schedule 20.01.2017
comment
Исключение в потоке main org.apache.spark.sql.AnalysisException: ссылка 'ID' неоднозначна, может быть: ID # 132, ID # 0   -  person SFatima    schedule 20.01.2017


Ответы (1)


Чтобы избавиться от повторяющихся столбцов при объединении в одноименные, используйте версию Seq:

val joinFinal = join1.join(df_1, Seq("ID"))
person Justin Pihony    schedule 19.01.2017