как написать программу Scala для удаления строки из фрейма данных, если она имеет то же значение, что и какая-либо другая строка для последнего столбца столбца?

#scala #dataframe

#scala #фрейм данных

Вопрос:

col1 col2 col3
Ant кайт 123
Bat укус 123
Летать ворота 211

здесь выходной фрейм данных должен включать

col1 col2
Ant кайт
Летать ворота

т.е. поскольку для col3 2-я строка имеет то же значение, что и 1-я строка, она должна исключить эту строку. Заранее спасибо.

Ответ №1:

Вот решение с использованием spark dataframe API.

 val spark = SparkSession.builder().master("local[*]").getOrCreate()
spark.sparkContext.setLogLevel("OFF")
import spark.implicits._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.Window

//sample dataframe
val df=Seq(("Ant","kite",123),("Bat","bite",123),("Fly","gate",211)).toDF("col1","col2","col3")
 
df.withColumn("rn",row_number.over(Window.partitionBy('col3).orderBy('col3)))
  .where('rn===1).drop('rn).show(false)

/* output
   ---- ---- ---- 
  |col1|col2|col3|
   ---- ---- ---- 
  |Fly |gate| 211|
  |Ant |kite| 123|
   ---- ---- ---- 

*/