Java for BigData: различия между версиями
Материал из Поле цифровой дидактики
Patarakin (обсуждение | вклад) Нет описания правки |
Afonbro (обсуждение | вклад) |
||
| Строка 9: | Строка 9: | ||
== Перечень рецептов == | == Перечень рецептов == | ||
==== Потоковое чтение больших файлов (JDBC ResultSet) ==== | |||
Обрабатывает миллионы записей из БД без переполнения памяти (OutOfMemoryError).. | |||
<syntaxhighlight lang="java"> | |||
// public void readLargeDataset() { | |||
String url = "jdbc:postgresql://localhost:5432/bigdata"; | |||
try (Connection conn = DriverManager.getConnection(url, "user", "pass")) { | |||
conn.setAutoCommit(false); | |||
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY); | |||
stmt.setFetchSize(1000); | |||
ResultSet rs = stmt.executeQuery("SELECT * FROM large_table"); | |||
while (rs.next()) { | |||
processRow(rs); | |||
} | |||
} catch (SQLException e) { e.printStackTrace(); } | |||
} | |||
</syntaxhighlight> | |||
==== Параллельная обработка с Java Stream API ==== | |||
Быстро фильтрует и агрегирует большие наборы данных, задействуя все ядра процессора | |||
<syntaxhighlight lang="java"> | |||
// List<Integer> numbers = new ArrayList<>(); | |||
for (int i = 0; i < 10_000_000; i++) numbers.add(i); | |||
long start = System.nanoTime(); | |||
long sum = numbers.parallelStream() // параллельный поток | |||
.mapToLong(i -> (long) i * i) // возводим в квадрат | |||
.sum(); | |||
System.out.println("Сумма квадратов: " + sum + ", время: " + (System.nanoTime() - start) + " нс"); | |||
</syntaxhighlight> | |||
Текущая версия от 23:32, 6 апреля 2026
| Описание | Как использовать Java для обработки больших данных? Перечень рецептов |
|---|---|
| Область знаний | Информатика, Интернет вещей, Большие данные |
| Область использования (ISTE) | Computational Thinker |
| Возрастная категория | 14
|
| Поясняющее видео | |
| Близкие рецепту понятия | |
| Среды и средства для приготовления рецепта: | Java |
Перечень рецептов
Потоковое чтение больших файлов (JDBC ResultSet)
Обрабатывает миллионы записей из БД без переполнения памяти (OutOfMemoryError)..
// public void readLargeDataset() {
String url = "jdbc:postgresql://localhost:5432/bigdata";
try (Connection conn = DriverManager.getConnection(url, "user", "pass")) {
conn.setAutoCommit(false);
Statement stmt = conn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(1000);
ResultSet rs = stmt.executeQuery("SELECT * FROM large_table");
while (rs.next()) {
processRow(rs);
}
} catch (SQLException e) { e.printStackTrace(); }
}
Параллельная обработка с Java Stream API
Быстро фильтрует и агрегирует большие наборы данных, задействуя все ядра процессора
// List<Integer> numbers = new ArrayList<>();
for (int i = 0; i < 10_000_000; i++) numbers.add(i);
long start = System.nanoTime();
long sum = numbers.parallelStream() // параллельный поток
.mapToLong(i -> (long) i * i) // возводим в квадрат
.sum();
System.out.println("Сумма квадратов: " + sum + ", время: " + (System.nanoTime() - start) + " нс");
