Получение количества строк по ключу из фрейма данных / RDD с использованием искры - PullRequest
0 голосов
/ 19 июня 2019

У меня есть файл, разделенный запятыми.Предположим, у меня есть файл учетных записей, и у меня есть следующие данные

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 или dataframe.?

Можете ли вы поделиться примерами

Спасибо

1 Ответ

1 голос
/ 19 июня 2019

Просто используйте df.groupBy("AcctId").count.Таким образом, вы избежите десериализации из вольфрама.Кроме того, вы получите кадр данных в качестве вывода.

Кстати, попробуйте прочитать весь каталог, а не отдельные CSV-файлы один за другим.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...