/ / видалити дублікат стовпця з файлу dataframe за допомогою scala - scala, apache-spark, dataframe

видаліть дублікат стовпця з інформаційного фрейма за допомогою scala-scala, apache-spark, dataframe

Мені потрібно видалити один стовпець з кадру даних. Маючи @ стовпець з тим же ім'ям. (Потрібно видалити лише один, а інший - для подальшого використання).

input:

sno age psk psk

1 12 a4 a4

output:

sno age psk

1 12 a4

Відповіді:

0 для відповіді № 1

RDD є шлях (але потрібно знати індекс стовпців повторюваних стовпців для видалення повторюваних стовпців dataframe)

Якщо у вас є dataframe з дубльованими стовпцями як

+---+---+---+---+
|sno|age|psk|psk|
+---+---+---+---+
|1  |12 |a4 |a4 |
+---+---+---+---+

Ви знаєте, що індекс двох останніх стовпців є дублікатами.

Наступний крок полягає в тому, щоб ви мали назви стовпців з видаленими дублікатами та форму schema

val columns = df.columns.toSet.toArray
val schema = StructType(columns.map(name => StructField(name, StringType, true)))

Життєва частина полягає в перетворенні dataframe до rdd і видалити необхідний індекс стовпця (тут це 4-й)

val rdd = df.rdd.map(row=> Row.fromSeq(Seq(row(0).toString, row(1).toString, row(2))))

Остаточним кроком є ​​перетворення rdd до dataframe використовуючи schema

sqlContext.createDataFrame(rdd, schema).show(false)

які повинні дати вам

+---+---+---+
|sno|age|psk|
+---+---+---+
|1  |12 |a4 |
+---+---+---+

Я сподіваюся, що відповідь корисна