labs: https://git.ai.ssau.ru/tk/big_data/src/branch/master
- Introduction to Apache Spark
- Reports with Apache Spark
- Stream processing with Apache Flink
- ZooKeeper
Для кэширования DataFrame необходимо вызвать метод cache() или persist() на объекте DataFrame. При этом данные будут сохранены в памяти кластера и будут доступны для последующих запросов. Также можно использовать различные уровни кэширования, например, MEMORY_ONLY, MEMORY_AND_DISK и другие, в зависимости от требований к производительности и доступности данных.
Метод mapPartitions может потребоваться в случае, когда необходимо выполнить операцию над каждой частью (partition) DataFrame, а не над каждой отдельной строкой. Например, если требуется применить функцию к каждому partition и получить новый DataFrame, то можно использовать метод mapPartitions. Это может быть полезно, когда функция имеет высокую стоимость и необходимо минимизировать количество вызовов. Кроме того, метод mapPartitions может использоваться для выполнения операций, которые требуют доступа к локальным ресурсам, таким как файлы или базы данных.
Граф обработки начинает выполняться в момент вызова действия (action) на DataFrame, например, при вызове метода show() или collect(). До этого момента все операции выполняются в ленивом режиме и формируют граф обработки.
В Apache Flink существуют следующие типы времени:
-
Event time - это время, которое связано с событиями, происходящими в реальном мире. Оно может быть получено из данных, которые поступают в систему.
-
Processing time - это время, которое используется для обработки данных внутри системы. Оно зависит от скорости обработки данных и может отличаться от реального времени.
-
Ingestion time - это время, которое определяется при поступлении данных в систему. Оно может быть использовано для корректировки временных меток в данных, если они были неправильно установлены при создании событий.
Класс ValueState в Apache Flink используется для хранения состояния значения в операторах, работающих в режиме с сохранением состояния (stateful operators). Он позволяет оператору сохранять значения между различными вызовами оператора, что может быть полезно для решения задач, связанных с агрегацией данных или обработкой потоковых данных. ValueState может хранить значения различных типов данных, таких как числа, строки, объекты и т.д. и обеспечивает быстрый доступ к сохраненным значениям в процессе выполнения оператора.