#java #runtime #google-cloud-dataflow #apache-beam
#java #среда выполнения #google-cloud-dataflow #apache-beam
Вопрос:
Облачный поток данных Google основан на apache beam.И beam официально не поддерживает java11. Но когда я запускаю задание потока данных на GCP и проверяю экземпляр виртуальной машины, который задание использует в качестве рабочего. Я обнаружил, что изображение контейнера «gcr.io/cloud-dataflow/v1beta3/beam-java11-batch:beam-2.23.0 «». Так использует ли поток данных java11 в качестве среды выполнения Java при запуске потока данных? Почему бы не использовать java8? Есть ли риск появления ошибок?
«спецификация»: { «контейнеры»: [ { «аргументы»: [ «—physmem_limit_pct=70», «—log_file=/var/log/поток данных/boot-json.log», «—log_dir=/var/log/поток данных», «—work_dir=/var/opt/google/поток данных», «—tmp_dir=/var/opt/google/tmp», «—endpoint=https: //dataflow.googleapis.com/» ], «изображение»: «gcr.io/cloud-dataflow/v1beta3/beam-java11-batch:beam-2.23.0»,
Комментарии:
1. Я думаю, вам следует задать Google этот вопрос. И если вы (действительно) обеспокоены и хотите найти практическое решение, посмотрите на более раннюю версию. Все, начиная с 2.17.0 SDK… на данный момент. Хотя некоторые версии должны устареть в начале 2021 года. Источник: cloud.google.com/dataflow/docs/support /…
2. FWIW — всегда есть риск, что в программном обеспечении есть ошибки. Официально поддерживаемый не означает «без ошибок».
Ответ №1:
«Бегун потока данных» (часть Apache Beam, которая преобразует конвейер Beam в представление потока данных и отправляет задание) определяет, какую версию Java вы используете для отправки задания, и пытается сопоставить ее. Итак, если вы запускаете свой конвейер с Java 11, выбранным рабочим будет Java 11.
Вы можете вручную выбрать контейнер, передав --workerHarnessContainerImage
флаг. Это не «поддерживается», потому что легко вызвать сбой задания способами, которые поток данных не может контролировать.
Комментарии:
1. Спасибо за комментарий. Я создал шаблон потока данных и запустил его в облачных функциях. Среда выполнения облачных функций — java11 и не может выбрать java8. Таким образом, невозможно изменить время выполнения потока данных на java8 без использования неподдерживаемого флага workerHarnessContainerImage. Я прав?
2. Это правильно. Вы можете просмотреть код здесь: github.com/apache/beam/blob /…
3. Кроме того, среда будет определяться JDK, который вы использовали при создании шаблона.