如何从数据集中删除某些记录?

时间:2017-01-31 10:47:42

标签: java apache-spark dataset

是否有任何特定的方法可以从Apache Spark上的数据集中删除记录?或者有没有其他方法可以实现它?

2 个答案:

答案 0 :(得分:3)

您可以使用filter方法生成没有这些记录的新数据集。

请注意,数据集是不可变的,因此您无法修改它们(即删除记录)。

答案 1 :(得分:0)

Spark中的DataFrame就像RDD一样,它们本质上是一个不可变的数据结构。因此,诸如创建新列或删除行,或者尝试通过索引访问DataFrame中的单个元素之类的东西不可能存在,只是因为这种做法违背了Spark的不可变RDD的原则。

您唯一能想到的就是使用过滤器

等转换功能将其转换为您想要的数据框

val df = spark.read.json(" examples / src / main / test / employee.json")

//将DataFrame注册为SQL临时视图 df.createOrReplaceTempView("雇员&#34)

val sqlDF = spark.sql(" SELECT * FROM employee where customer_id!= 002")

使用此代码,您可以删除具有customer_id = 002的记录,并可以将过滤后的记录写入文件或表格中

sqlDF.createOrReplaceTempView("员工")//创建员工视图

sqlDF.write.format(" parquet")。save(" employee.parquet")//保存镶木地板文件