Сталкивались ли вы с подобной проблемой?
- Сохранить все выходные столбцы (20000 + столбцы)
Когда я использую небольшую таблицу (2000 строк) внутреннее объединение большой таблицы с несколькими преобразованиями (20 000 столбцов, около 2 200 000 строк), выделение блоков sql в dataFrame.explain в течение нескольких часов, затем запуск задания и выполнение через 5 минут (широковещательное соединение).
Выберите часть столбцов (~ 4000 столбцов)
Работа будет выполняться нормально.
Я проверил план, кажется, все в порядке. Есть ли какие-либо конфигурации, которые мне нужно добавить к работе? Вот план c логики для генерации большой таблицы (более 20 000 столбцов) введите описание изображения здесь
Вот объединение sql:
введите описание изображения здесь
Job Config:
spark.executor.memory = "8g"
spark.executor.cores= "2"
spark.driver.memory= "6g"
spark.driver.maxResultSize= "4g"
spark.driver.cores= "2"
spark.yarn.max.executor.failures= "1500"
spark.executor.memoryOverhead="2048"
spark.default.parallelism="1800"
spark.dynamicAllocation.enabled="true"
spark.dynamicAllocation.initialExecutors="8"
spark.dynamicAllocation.maxExecutors="300"
spark.dynamicAllocation.minExecutors="20"
spark.shuffle.service.enabled="true"
spark.sql.caseSensitive="true"
spark.sql.tungsten.enabled="true"
spark.sql.constraintPropagation.enabled="true"
spark.io.compression.codec="snappy"
spark.speculation="true"
spark.speculation.interval="10s"
spark.speculation.multiplier="1.5"
spark.speculation.quantile="0.9"
spark.serializer="org.apache.spark.serializer.KryoSerializer"
spark.kryo.registrator="com.paypal.serializer.KryoRegister"
spark.kryoserializer.buffer.max="1024m"
spark.kryo.registrationRequired="false"
spark.hadoop.avro.mapred.ignore.inputs.without.extension="false"