#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.