我有一個JSON文件加載到Spark羣集中。我想根據幾列標識所有重複記錄,並將它們寫入RDD。我嘗試使用Spark SQL,但無法完成任務。從多列中的臨時表中選擇重複項
-1
A
回答
0
我不明白你是什麼意思,通過識別重複。如果數據是基於架構的,正如您所提到的,可以從Spark SQL
獲得幫助。將其轉換爲DataFrame
,如果您只是想從組中刪除重複項,請嘗試以下操作。 df.dropDuplicates(List("colA" , "colB"))
+0
我想選擇重複項而不是刪除它們。我想要一個地方來存儲我所有的重複記錄。 –
0
假設你有兩列(「列1」和「列2」),您可以用它來找到,如果記錄是重複的,你可以試試下面的(使用星火SQL):
val newData = data
.groupBy("column1", "column2")
.agg(count("*").as("cnt"))
.where(col("cnt") > 1)
如果你需要的所有列,可以與原始數據合併產生的數據框:
val finalData = newData.join(data, Seq("column1", "column2"))
編輯:
或者,如果您有HiveContext,則可以使用窗口功能:
import org.apache.spark.sql.expressions.Window
val newData = data
.withColumn("cnt", count("*").over(Window.partitionBy("column1", "column2"))
.where(col("cnt") > 1)
相關問題
- 1. 重複選擇臨時表
- 2. 從多個列表中選擇重複項
- 3. 在列表中選擇重複項linq
- 4. 從選擇下拉列表中篩選重複選項
- 5. 從多個表中選擇不重複
- 6. 選擇臨時表的列
- 7. 從多個表中選擇行時使用sql server臨時表
- 8. mysql從具有重複項目的列表中選擇
- 9. 無法從臨時表中選擇
- 10. 從SP和臨時表中選擇值
- 11. MySQL:光標從臨時表中選擇
- 12. 從下拉列表中刪除多個重複的選項
- 13. Python:從多個列表中隨機選擇,無重複
- 14. Angular中的重複列表項:無法選擇第一項
- 15. 從多個選擇列表中取消選擇選項
- 16. 從單一行中選擇重複項?
- 17. 填充選擇列表正在創建重複/多個選項
- 18. 刪除選擇時選擇的項目會從列表框中
- 19. Oracle從衆多JOIN中選擇一對多返回重複項
- 20. 選擇臨時表
- 21. 下拉列表中的多項選擇
- 22. 如何從java中的列表中選擇重複值?
- 23. 從多選列表中複製所選項目到其他多選列表
- 24. 在AngularJs中從下拉列表中選擇多個選項
- 25. 從數組列表中選擇選項
- 26. JSoup從列表中選擇選項java
- 27. 重定向自動從選擇下拉列表中選擇一個項目時
- 28. 想從列表中選擇選項時做些什麼(列表首選項)
- 29. 在表格的多列中選擇重複的行
- 30. 選擇/取消選擇多個列表中的複選框
您能否提供更多信息?可能是JSON模式,你在尋找什麼字段 – Rakshith
你可以說明目的,因爲可能有其他方法。 你可以排序(https://spark.apache.org/docs/1.6.1/api/java/org/apache/spark/sql/DataFrame.html#sort(org.apache.spark.sql.Column .. 。))並遍歷 – Ashish