У меня есть набор данных с примерно 500 тыс. Строк и 20 столбцов.
Данные разбиты на уровни, всего их 10 (см. Изображение внизу, отображающее 5 уровней), а нижний - уровеньбольше данных, которые он содержит (на самом деле это одни и те же данные для всех уровней, но для более низких уровней данные более детализированы), моя цель состоит в том, чтобы зафиксировать некоторые значения на более низких уровнях (сверху вниз), чтобы сделать это итеративноразбить основной набор данных и собрать один (родительский) уровень и его прямой дочерний элемент:
1&2
2&3
3&4
4&5....
Затем я объединяю родительский и дочерний набор данных на основе некоторых общих столбцов и выполняю исправление значений:
for (Triple<String, String, Seq<String>> aggregationTriple : getAggregationLevels())
{
String parentLevel = aggregationTriple.getLeft();
String childLevel = aggregationTriple.getMiddle();
Seq<String> aggregationCols = aggregationTriple.getRight();
Dataset<Row> parents = finalDataset.where(col(agg).equalTo(lit(parentLevel)));
Dataset<Row> children = data.where(col(agg).equalTo(lit(childLevel)));
Dataset<Row> joined = parents.join(children, aggregationCols, "inner");
//Add new calculated metrics
for(int i=0; i < METRICS.length; i++)
{
String metric = METRICS[i];
String newMetricName = NEW_METRICS[i];
//We work only on metrics here
joined = joined
.withColumn(PERFORM VALUE FIX HERE);
}
finalDataset = finalDataset.union(joined.select(ArrayUtils.addAll(COLUMNS_KEYS, NEW_COLUMNS_METRICS)));
}
return finalDataset;
}
public void run(){
finalDataset.write().text()
}
Когда я запускаю его локально, я замечаю, что внутренняя искра создает огромное количество задач: (26004).
Для относительно небольшого файла паркета (6 МБ)
Означает ли это, что мой набор данных разделен на такое количество разделов? Кроме того, в визуализации DAG я вижу огромное дерево, в котором листья более или менее имеют одинаковое представление:
Я не могу понять, почему так много задач создано для такого относительно небольшого файла,Просьба любое предложение очень приветствуется.