Стратегия разделения паркета для одного небольшого файла и оптимизация чтенияJAVA

Программисты JAVA общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Стратегия разделения паркета для одного небольшого файла и оптимизация чтения

Сообщение Anonymous »

У меня есть один файл паркета объемом от 5 до 100 МБ данных.
Пока я пытался создать раздел в столбце «Дата», создается несколько файлов, что снижает производительность чтения, поскольку их много. небольшие файлы.
Поэтому я использовал repartition(1) для создания только одного файла.
Теперь запрос, используемый для этого файла с использованием Spark sql, - это дата запрос диапазона, например дата, между x и y.

Код: Выделить всё

public DataFilter applyValuationDateRangeFilter() {
AlcyoneDate startDate = calculationContext.getDateSequence().getStartDate();
AlcyoneDate endDate = calculationContext.getDateSequence().getEndDate();
filterQueries.append(" AND ");
filterQueries.append("ValuationDate BETWEEN '").append(startDate).append("' AND     '").append(endDate).append("'");
return this;
}
Я пытался создать раздел в столбце ValuationDate с помощью repartition(1), но не получил особой пользы.
Как повысить производительность чтения?< /p>
Я применяю фильтр во время загрузки файла:

Код: Выделить всё

public  Dataset getDatasetForInputFileWithFiltering(String parquetFilePath, String filterQuery) {
return getSparkSession().read().format("parquet")
.option("inferSchema", "true")
.option("header", "true")
.load(parquetFilePath)
.filter(filterQuery);
}
Также мне нужно перебрать все строки, чтобы заполнить некоторые данные:

Код: Выделить всё

Iterator rowIterator = rows.toLocalIterator();
while (rowIterator.hasNext()) {
Row row = rowIterator.next();
Я не могу использовать rows.collectAsList(), поскольку это дает мне OOM.
Также я не могу использовать rows.foreach и rows.foreachPartition, поскольку мой нижестоящий код не поддерживается многопоточность.

Подробнее здесь: https://stackoverflow.com/questions/789 ... timization
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «JAVA»