Задание Spark останавливается после попытки подсчета различных значений фрейма данных столбца

#python #apache-spark #pyspark

Вопрос:

Я новичок в pyspark и застрял в решении проблемы, возникающей при попытке выполнить операции с фреймом данных spark, который был создан из txt-файла, содержащего пользовательские события. Представление этого фрейма данных (200 тыс. строк) является :

отметка времени user_hash имя браузера имя операционной системы имя города название страны
2014-10-12 17:01:01 f4fdd9e55192e9475… Сафари iOS Бристоль Великобритания
2014-10-12 17:01:01 0ae53126499336757… Сафари iOS Бэзилдон Великобритания
2014-10-12 17:01:01 c5ac174ee153f7e57… Хром Линукс Тоттеридж Великобритания
——————- ——————— ———— ——- ———- —————

Ну, на этом df я пытаюсь получить некоторую статистику, используя следующие строки:

 df.groupBy("city_name").count().orderBy(desc("count")).show(5) df.groupBy("country_name").count().orderBy(desc("count")).show(5)  

Это означает, что вы попадаете в топ-5 стран по количеству событий (строк).

На данный момент требуется возраст для вычисления gt; 120 лет. Поскольку я новичок в этой технологии, возможно, некоторые концепции я все еще не понимаю, так как, возможно, мне не хватает некоторых деталей при создании контекста spark или сеанса Spark, то есть с неправильными параметрами конфигурации. Кто-то указал, что это может быть связано с тем, что spark работает на драйвере, а не на исполнителях. Если да, то как я это исправлю?. Это при создании контекста spark или сеанса spark с правильными параметрами?.

В настоящее время в моем коде я создаю сеанс spark следующим образом :

 spark=SparkSession.builder.master("local[*]").appName("test").getOrCreate()  

Затем df создается следующим образом :

 df = spark.read.option("lineSep", "n").text(filepath)  

Мы будем признательны за любые отзывы, касающиеся отладки кода, а также за предложения по улучшению описания моей проблемы. Овации

Комментарии:

1. Это a groupBy и будет обрабатываться в главном узле.

2. находятся ли ваши данные в csv операционной txt ?

3. данные представляют собой файл .gzip, он двоичный, но предоставление .text(*.gzip) тоже отлично работает

4. @Lamanus, как бы вы тогда ускорили подсчет вхождений различных значений в обоих столбцах?. Есть какие-нибудь намеки на то, почему это занимает так много времени?.

5. Я предлагаю вам распаковать файл или использовать другой формат сжатия (например, lzo, bzip2). файл gzip не поддается разделению, что означает, что вы не получите никакой выгоды от параллельной обработки от Spark.