Проблема: Я хочу импортировать данные в Spark EMR из S3, используя:
data = sqlContext.read.json("s3n://.....")
Есть ли способ установить количество узлов, которые Spark использует для загрузки и обработки данных? Это пример того, как я обрабатываю данные:
data.registerTempTable("table")
SqlData = sqlContext.sql("SELECT * FROM table")
Контекст. Данные не слишком большие, требуется много времени для загрузки в Spark, а также для запроса. Я думаю, что Spark разбивает данные на слишком много узлов. Я хочу иметь возможность установить это вручную. Я знаю, имея дело с RDD и sc.parallelize
, я могу передать количество разделов в качестве ввода. Кроме того, я видел repartition()
, но я не уверен, может ли он решить мою проблему. Переменная data
- это DataFrame
в моем примере.
Позвольте мне определить раздел более точно. Определение одно: обычно называемое "ключ раздела", где столбцы выбираются и индексируются для ускорения запроса (это не то, что я хочу). Определение два: (вот где моя проблема), предположим, что у вас есть набор данных, Spark решает, что он собирается распространять его на многих узлах, чтобы он мог выполнять операции над данными параллельно. Если размер данных слишком мал, это может еще больше замедлить процесс. Как я могу установить это значение