我有一张带有柱子的桌子 XCEPT(filteredDuplicates)
当我在Spark shell中运行它时,它正如预期的那样完美地工作。但是在spark提交中,重复删除不是按排序顺序(即)seq_no 3在有效帧中,1,5在拒绝帧中。另外,除了()在spark提交中也有问题。我被困了一整天,请有人帮忙 提前谢谢大家
答案 0 :(得分:0)
以下方法使用spark-sql提供的row_number函数生成有效和无效的数据帧。我没有访问cassandra所以我在这里使用一个简单的Dataframe。
import sqlContext.implicits._
val df = sc.parallelize(Seq(("a" -> 1), ("b" -> 2), ("c" -> 3), ("d" -> 4), ("a" -> 5), ("a" -> 6), ("c" -> 7), ("c" -> 8))).toDF("c1", "c2")
df.registerTempTable("temp_table")
val masterdf = sqlContext.sql("SELECT c1, c2, ROW_NUMBER() OVER(PARTITION BY c1 ORDER BY c2) as row_num FROM temp_table")
masterdf.filter("row_num = 1").show()
+---+---+-------+
| c1| c2|row_num|
+---+---+-------+
| a| 1| 1|
| b| 2| 1|
| c| 3| 1|
| d| 4| 1|
+---+---+-------+
masterdf.filter("row_num > 1").show()
+---+---+-------+
| c1| c2|row_num|
+---+---+-------+
| a| 5| 2|
| a| 6| 3|
| c| 7| 2|
| c| 8| 3|
+---+---+-------+