Большие данные. Flink Advanced (12): локальный режим Flink включает WebUI.
Большие данные. Flink Advanced (12): локальный режим Flink включает WebUI.

Откройте WebUI в локальном режиме Flink.

На работе мы обычно используем инструмент разработки IntelliJ IDEA для разработки кода. Чтобы облегчить и быстро отладить Flink и понять статус работы программы Flink, мы надеемся, что веб-интерфейс можно будет просмотреть при запуске Flink в локальном инструменте разработки. чтобы мы могли написать программу Flink, когда локальный веб-интерфейс включен.

1. Добавьте зависимости WebUI локального режима в проект Flink.

Перед Flink1.15 добавьте зависимость соответствующей версии Scala в проект Java Flink или проект Scala Flink в соответствии с используемой версией Scala.

Язык кода:javascript
копировать
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-runtime-web_${scala.binary.version}</artifactId>
  <version>${flink.version}</version>
</dependency>

После версии Flink1.15, будь то проект Java Flink или проект Scala Flink, добавление следующих зависимостей не требует дополнительной зависимости от версии Scala.

Язык кода:javascript
копировать
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-runtime-web</artifactId>
  <version>${flink.version}</version>
</dependency>

2. Включите локальный WebUI в коде.

Java-код Flink запускает локальный WebUI:

Язык кода:javascript
копировать
Configuration conf = new Configuration();
//Устанавливаем локальный порт, привязанный к WebUI
conf.setString(RestOptions.BIND_PORT,"8081");
//Используем конфигурацию
StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(conf);

Код Flink Scala запускает локальный WebUI:

Язык кода:javascript
копировать
val configuration = new Configuration()
//Устанавливаем локальный порт, привязанный к WebUI
configuration.set(RestOptions.BIND_PORT,"8081")
//Используем конфигурацию
val env: StreamExecutionEnvironment = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(configuration)

3. Напишите полный код для запуска и доступа к WebUI.

Пример Java-кода:

Язык кода:javascript
копировать
//1. Использовать локальный режим.
Configuration conf = new Configuration();
//Устанавливаем локальный порт, привязанный к WebUI
conf.setString(RestOptions.BIND_PORT,"8081");
//Используем конфигурацию
StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(conf);

//2. Чтение данных сокета
DataStreamSource<String> ds = env.socketTextStream("node3", 9999);

//3. Подготовьте данные формата K, V.
SingleOutputStreamOperator<Tuple2<String, Integer>> tupleDS = ds.flatMap((String line, Collector<Tuple2<String, Integer>> out) -> {
    String[] words = line.split(",");
    for (String word : words) {
        out.collect(Tuple2.of(word, 1));
    }
}).returns(Types.TUPLE(Types.STRING, Types.INT));

//4. Совокупные результаты печати.
tupleDS.keyBy(tp -> tp.f0).sum(1).print();

//5.execute запускает выполнение
env.execute();

Код для запуска:

Пример кода Scala:

Язык кода:javascript
копировать
//1. Создаём локальную среду WebUI.
val configuration = new Configuration()
//Устанавливаем привязанный локальный порт
configuration.set(RestOptions.BIND_PORT,"80")
//Первый метод настройки
val env: StreamExecutionEnvironment = StreamExecutionEnvironment.createLocalEnvironmentWithWebUI(configuration)

//2.Scala Неявное преобразование импорта потоковой обработки с использованием Scala API Неявное преобразование необходимо для вывода типа после операции функции.
import org.apache.flink.streaming.api.scala._

//3. Чтение данных сокета
val linesDS: DataStream[String] = env.socketTextStream("node3", 9999)

//4. Выполнение статистики WordCount.
linesDS.flatMap(line=>{line.split(",")})
  .map((_,1))
  .keyBy(_._1)
  .sum(1)
  .print()

//5.Наконец используем выполнение Метод запускает выполнение
env.execute()

Доступ к любому из вышеперечисленных кодов можно получить через:http://localhostПриходите и посмотритеWebUI。

Примечание. Прежде чем запускать код, сначала запустите службу Socket на узле 3, а затем запустите код. После импорта зависимости flink-runtime-web лучше всего перезапустить инструмент разработки и перезагрузить соответствующий пакет зависимостей. В противном случае при доступе к локальному файлу могут возникнуть ошибки «{"errors":["Not Found: /"]}". WebUI после выполнения кода Доступ к WebUI невозможен.

boy illustration
Как настроить размер экрана в PR. Учебное пособие по настройке размера видео в PR [подробное объяснение]
boy illustration
Элегантный и мощный: упростите операции ElasticSearch с помощью easy-es
boy illustration
Проект аутентификации по микросервисному токену: концепция и практика
boy illustration
【Java】Решено: org.springframework.http.converter.HttpMessageNotWritableException.
boy illustration
Изучите Kimi Smart Assistant: как использовать сверхдлинный текст, чтобы открыть новую сферу эффективной обработки информации
boy illustration
Начало работы с Docker: использование томов данных и монтирования файлов для хранения и совместного использования данных
boy illustration
Использование Python для реализации автоматической публикации статей в публичном аккаунте WeChat
boy illustration
Разберитесь в механизме и принципах взаимодействия потребителя и брокера Kafka в одной статье.
boy illustration
Spring Boot — использование Resilience4j-Circuitbreaker для реализации режима автоматического выключателя_предотвращения каскадных сбоев
boy illustration
13. Springboot интегрирует Protobuf
boy illustration
Примечание. Инструмент управления батареями Dell Dell Power Manager
boy illustration
Общая интерпретация класса LocalDate [java]
boy illustration
[Базовые знания ASP.NET Core] -- Веб-API -- Создание и настройка веб-API (1)
boy illustration
Настоящий бой! Подключите Passkey к своему веб-сайту для безопасного входа в систему без пароля.
boy illustration
Руководство по настройке Nginx: как найти, интерпретировать и оптимизировать настройки Nginx в Linux
boy illustration
Typecho отображает использование памяти сервера
boy illustration
Как вставить элемент перед указанным ключом в ассоциативный массив в PHP
boy illustration
swagger2 экспортирует API как текстовый документ (реализация Java) [легко понять]
boy illustration
Выбор фреймворка nodejs Express koa egg MidwayJS сравнение NestJS
boy illustration
Руководство по загрузке, установке и использованию SVN «Рекомендуемая коллекция»
boy illustration
Интерфейс PHPforwarding_php отправляет запрос на получение
boy illustration
Создавайте и защищайте связь в реальном времени с помощью SignalR и Azure Active Directory.
boy illustration
ВичатПубличная платформаразвивать(три)——ВичатQR-кодгенерировать&Сканировать кодсосредоточиться на
boy illustration
[Углубленное понимание Java IO] Используйте InputStreamReader для чтения содержимого файла и легкого выполнения задач преобразования текста.
boy illustration
сравнение строк PHP
boy illustration
9 сценариев асинхронного сбоя @Async
boy illustration
Эффективная обработка запланированных задач: углубленное изучение секретов библиотеки APScheduler на Python
boy illustration
Рекомендации по облегченному артефакту развязки внутренних компонентов Spring Event (событие Spring)
boy illustration
Go: Лесоруб-лесоруб на колесах Введение
boy illustration
Основы серверной разработки: технология кэширования, которую должен освоить каждый программист