Функция ограничения Spark DataFrame слишком долго отображается - PullRequest
0 голосов
/ 10 февраля 2019
import pyspark
from pyspark.sql import SparkSession
from pyspark.conf import SparkConf
import findspark
from pyspark.sql.functions import countDistinct
spark = SparkSession.builder \
.master("local[*]") \
.appName("usres mobile related information analysis") \
.config("spark.submit.deployMode", "client") \
.config("spark.executor.memory","3g") \
.config("spark.driver.maxResultSize", "1g") \
.config("spark.executor.pyspark.memory","3g") \
.enableHiveSupport() \
.getOrCreate()

handset_info = ora_tmp.select('some_value','some_value','some_value','some_value','some_value','some_value','some_value')

Я настраиваю искру с памятью выполнения 3 ГБ и памятью выполнения PysPark 3 ГБ. Моя база данных имеет более 70 миллионов строк.Покажите, что я вызываю метод

 handset_info.show()

, который показывает верхнюю 20 строку в промежутке между 2-5 секундами.Но когда я пытаюсь запустить следующий код

mobile_info_df = handset_info.limit(30)
mobile_info_df.show()

, чтобы показать верхние 30 строк, это занимает слишком много времени (3-4 часа).Логично ли занять столько времени?Есть ли проблема в моей конфигурации.Конфигурация моего ноутбука -

  • Core i7 (4 ядра) ноутбук с оперативной памятью 8 ГБ

1 Ответ

0 голосов
/ 13 марта 2019

Ваша конфигурация в порядке.Эта огромная разница в продолжительности вызвана базовой реализацией.Разница в том, что limit () считывает все 70 миллионов строк, прежде чем создает кадр данных с 30 строками.В отличие от этого, Show () просто берет первые 20 строк существующего фрейма данных и поэтому должен только читать эти 20 строк.Если вы просто заинтересованы в отображении 30 вместо 20 строк, вы можете вызвать метод show () с 30 в качестве параметра:

df.show(30, truncate=False)
...