繁体   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