Почему spark не может прочитать большой текстовый файл JSON, несмотря на то, что памяти достаточно для выполнения и кеширования? - PullRequest
0 голосов
/ 08 июня 2019

Я настроил автономный кластер (узел 32 ГБ и 32 ядра) с 2 рабочими по 16 ядер и 10 ГБ памяти каждый.Размер файла JSON составляет всего 6 ГБ.Я пытался настроить различные конфигурации, в том числе увеличение памяти молодого поколения.Есть ли что-то еще, что я пропускаю?

PS: Это не работает даже в spark-shell.

Конфигурации в файле env.

  • SPARK_EXECUTOR_MEMORY = 8g
  • SPARK_WORKER_CORES = 16
  • SPARK_WORKER_INSTANCES = 2
  • SPARK_WORKER_MEMORY = 101 * * * * 105 * 105 *пробовал следующие параметры конфигурации при отправке задания:
    ./spark-submit --driver-memory 4g \
                   --supervise --verbose \
                   --conf spark.serializer=org.apache.spark.serializer.KryoSerializer \ 
                   --conf spark.memory.fraction=0.2 \
                   --conf spark.memory.storageFraction=0.5 \
                   --conf spark.network.timeout=10000000 \
                   --conf spark.executor.heartbeatInterval=10000000 
    

    val dataFrame = spark.read.option("multiline", "true")
                              .schema(schema)
                              .json(jsonFilePath)
                              .persist(StorageLevel.MEMORY_ONLY_SER_2)
    
    dataFrame.createOrReplaceTempView("node")
    
    val df = spark.sqlContext.sql("select col1, col2.x, col3 from node")
                             .persist(StorageLevel.MEMORY_ONLY_SER_2)
    
    val newrdd = df.repartition(64)
                   .rdd.mapPartitions(partition => {
                    val newPartition = partition.map(x => {
                        //somefunction()
                    }).toList
                    newPartition.iterator
                }).persist(StorageLevel.MEMORY_ONLY_SER_2)
    

    Ошибка:

         Lost task 0.0 in stage 0.0 (TID 0, 131.123.39.101, executor 0): java.lang.OutOfMemoryError: GC overhead limit exceeded
    

    Заранее спасибо

...