Java for BigData: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
Строка 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) + " нс");