【发布时间】:2019-06-20 02:34:20
【问题描述】:
我有一个逗号分隔的文件。假设我有 Accounts 文件并且我有以下数据
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 个文件的循环中执行此操作,并且我正在更新并发映射中的计数,因为 acctid 存在于所有 8 个文件中。地图中的计数是累积和。这 8 个文件预计有数百万行。
我有这些问题
实现这一目标的最佳方法是什么。 GroupByKey 更好还是 ReduceByKey。我应该使用 RDD 还是数据框。 ?
你能分享例子吗
谢谢
【问题讨论】:
标签: scala apache-spark