#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|
---- ---- ----
*/