Во время работы на искровой работе я вижу странную вещь в SPARKUI. Все мои данные хранятся на диске.

В работе много работы. Этот конкретный c этап задачи делает соединение. мы соединяем две таблицы, используя широковещательное соединение. Мы использовали 8GB полный лимит трансляции. В левой таблице 18 миллионов строк, а в правой - около 7,5 ГБ. Каждая строка объединена со 100 продуктами. (Это может также отличаться). Я знаю, что соление может помочь, но данные очень большие. Итак, мы думали, что трансляция поможет лучше. Мы порезали данные настолько, насколько это было возможно.
Итак, мой вопрос в том, передаются ли все данные на диск (думаю, да). Каков максимальный предел для spark.shuffle.partition (я знаю, что держать размер задачи 128 МБ - это хорошо.) И как мы можем оптимизировать это объединение. При необходимости я могу добавить больше контента к вопросу.
Я могу попробовать больший размер раздела в случайном порядке. Но каждый забег занимает много времени, и прежде чем я захочу получить мнение эксперта или сообщества. Могу ли я сделать случайный раздел 42000. Я не могу найти ни одного случая использования, когда люди использовали этот большой счет. Итак, это даже логично?
Мы оптимизируем это с последних 20 дней. Поэтому, пожалуйста, учтите усилия и время. Я не могу вставить код полностью здесь. Как это указывается организацией c. Если какая-либо информация необходима, я могу добавить вопрос сам. Код работает, но занимает 10-12 часов.
Под искрой Отправить
nohup spark2-submit --master yarn --deploy-mode cluster --name "datajob BULK Multiple Objectives" --queue root.prod.lalala --principal pqrs@mnp.xy.zz --keytab /home/xxxxxxxxxx/xxxxxxxxxx.keytab --driver-cores 5 --executor-cores 5 --driver-memory=50g --executor-memory=100G --num-executors 70 --conf spark.acls.enable=true --conf spark.blacklist.application.fetchFailure.enabled=true --conf spark.blacklist.enabled=true --conf spark.ui.view.acls=* --files /nfs/yyyyyy/home/xxxxxxxxxx/rahul/lalalalala.conf --conf spark.rpc.io.serverThreads=64 --conf spark.memory.offHeap.enabled=true --conf spark.memory.offHeap.size=5G --conf spark.yarn.appMasterEnv.JAVA_HOME=/usr/java/default --conf spark.executorEnv.JAVA_HOME=/usr/java/default --conf spark.executor.extraJavaOptions='-XX:+UseG1GC' --conf spark.driver.extraJavaOptions='-XX:+UseG1GC' --conf spark.shuffle.file.buffer=1MB --conf spark.dynamicAllocation.enabled=false --conf spark.unsafe.sorter.spill.reader.buffer.size=1MB --conf spark.file.transferTo=false --conf spark.shuffle.file.buffer=1MB --conf spark.shuffle.unsafe.file.ouput.buffer=5MB --conf spark.shuffle.service.index.cache.entries=2048 --conf spark.shuffle.registration.timeout=2m --conf spark.shuffle.registration.maxAttempts=5 --conf spark.python.worker.memory=2g --conf spark.yarn.driver.memoryOverhead=10G --conf spark.yarn.executor.memoryOverhead=10g --conf spark.driver.maxResultSize=3g --conf spark.serializer=org.apache.spark.serializer.KryoSerializer --conf spark.kryoserializer.buffer.max=1024m --conf spark.yarn.maxAppAttempts=1 --conf spark.sql.shuffle.partitions=7000 --class com.dh.datajob.datajob /nfs/yyyyyy/home/xxxxxxxxxx/mm/datajob-assembly-0.1.jar lalala data_event 0.0 null null null abc > xyz.log 2>&1 &