Пока вы загружаете данные в любую распределенную систему, например HDFS, вы загружаете их с ключом раздела. В этом случае, если для одного из значений ключа раздела у вас больше записей по сравнению с другими значениями, ваши данные распределяются неравномерно. В большинстве случаев Spark будет работать хорошо, даже если ваши данные слегка искажены, но, например, в одном значении раздела у вас есть 90% данных, а в другом 10%, тогда это будет проблемой для большого набора данных. Ваша одна задача будет выполнять больше работы по сравнению с другой, и искра застрянет в одной задаче. Поэтому анализ данных является важным фактором
Для обработки данных Skegness необходимо либо равномерно разделить данные, либо использовать итеративное широковещательное соединение. В этом есть отличная статья от Databricks. Пожалуйста, проверьте Databricks с текстовым итеративным широковещательным соединением.
---------
По умолчанию создается раздел для одного блока HDFS. По умолчанию это 64 МБ. При чтении из искры, если вы не собираетесь предоставлять какой-либо параметр для параллелизма, он создаст одну задачу для каждого блока. Возьмем, к примеру, 4 ядра и 5 разделов, и каждый раздел занимает около 10 минут. поэтому 4 ядра будут работать на 4-х разделах параллельно и завершатся за 10 минут. Затем последний раздел будет завершен через 10 минут после того, как он будет занят одним свободным ядром. Так что больше разделов тоже не хорошо. В случае меньшего количества разделов параллелизм будет меньше, и перекос данных может произойти, если большая часть ваших данных находится в одном разделе, и одна задача будет выполнять больше работы, чем другая.