簡體   English   中英

使用Spark從數據幀/ RDD中按鍵獲取行數

[英]Getting the row count by key from dataframe / RDD using spark

我有一個逗號分隔的文件。 假設我有帳戶文件,並且我有以下數據

AcctId, AcctName, City, State, Deductible
1,ABC,Fremont,CA,4000
1,DEF,UnionCity,CA,10000
2,FFF, Hayward,CA,2323

I want to have a dataset or a list which has AcctId,Count as 
1,2
2,1

我有以下代碼

val df: DataFrame = sqlContext.read
          .format("com.databricks.spark.csv")
          .option("header", true) // Use first line of all files as header
          .option("delimiter", ",")
          .option("inferSchema", "true") // Automatically infer data types
          .load(file)

        val accGrpCountsDs = df.groupByKey(acctId => acctId).count()

我正在為8個文件循環執行此操作,並且由於所有8個文件中都存在acctid,因此我正在更新並發映射中的計數。 地圖中的計數是累積總和。 這8個文件預計將具有數百萬行。

我有這些問題

什么是實現這一目標的最佳方法。 GroupByKey是Better還是ReduceByKey。 我應該使用RDD還是數據幀。

你能分享例子嗎

謝謝

只需使用df.groupBy("AcctId").count 這樣,您可以避免鎢絲反序列化。 同樣,您將獲得一個數據幀作為輸出。

順便說一句,考慮一一讀取整個目錄,而不是單個csv文件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM