Я обрисовал в общих чертах все шаги ниже, даже если вы находитесь дальше, чем начало.Это поможет другим пользователям, которые могут застрять на другом шаге.
Сначала необходимо создать проект Maven из архетипа примеров луча Apache:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.beam \
-DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-DarchetypeVersion=2.12.0 \
-DgroupId=org.example \
-DartifactId=word-count-beam \
-Dversion="0.1" \
-Dpackage=org.apache.beam.examples \
-DinteractiveMode=false
cd word-count-beam
(однократная настройка)
Включить API в вашем проекте GCP.
Настройте учетные данные приложения по умолчанию с помощью gcloud
, чтобы вы могли создавать конвейеры потока данных.
gcloud auth application-default login
Создание корзины GCS, доступной для записи, для использования в следующих командах.
Для запуска примера UserScore:
mvn compile exec:java -Pdataflow-runner -Dexec.mainClass=org.apache.beam.examples.complete.game.UserScore -Dexec.args="--project=MY_PROJECT --tempLocation=gs://MY_BUCKET_NAME/tmp --runner=DataflowRunner --output=gs://MY_BUCKET_NAME/userscore"
Чтобы запустить пример HourlyTeamScore:
mvn compile exec:java -Pdataflow-runner -Dexec.mainClass=org.apache.beam.examples.complete.game.HourlyTeamScore -Dexec.args="--project=MY_PROJECT --tempLocation=gs://MY_BUCKET_NAME/tmp --runner=DataflowRunner --output=gs://MY_BUCKET_NAME/hourlyteamscore"
Примеры LeaderBoard и GameStats основаны на динамических данных, отправляемых в Pubsub и обрабатываемых в конвейере.Существует приложение Injector, которое отвечает за публикацию этих данных в Pubsub.
(однократная настройка) Перед запуском инжектора.Нам нужно создать набор учетных данных локально, что позволит нам запускать Injector без проблем с квотами Pubsub.Для этого вам необходимо:
- Создать учетную запись службы в вашем проекте GCP.Учетная запись службы должна иметь доступ к Dataflow, GCS, Pubsub и BigQuery.Запомните адрес электронной почты учетной записи службы, связанный с ней.
- Получите учетные данные учетной записи службы и сохраните их в
CREDENTIALS_FILE
gcloud iam service-accounts keys create CREDENTIALS_FILE --iam-account MY_SERVICE_ACCOUNT_EMAIL
Для запускапример конвейера LeaderBoard:
- Сначала нам нужно запустить инжектор (
MY_TOPIC_NAME
будет создано, если он не существует):
GOOGLE_APPLICATION_CREDENTIALS=CREDENTIALS_FILE mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.complete.game.injector.Injector -Dexec.args="MY_PROJECT MY_TOPIC_NAME none"
Затем мы создаем выходной набор данных в BigQuery:
bq mk MY_DATASET
Наконец, мы запускаем конвейер LeaderBoard:
mvn compile exec:java -Pdataflow-runner -Dexec.mainClass=org.apache.beam.examples.complete.game.LeaderBoard -Dexec.args="--project=MY_PROJECT --tempLocation=gs://MY_BUCKET_NAME/tmp --runner=DataflowRunner --dataset=MY_DATASET --topic=projects/MY_PROJECT/topics/MY_TOPIC_NAME"
Посмотрите на таблицу, созданную в MY_DATASET
, чтобы увидеть выходные данные во время работы конвейера.
Отмените конвейер, нажав Ctrl + C.
Остановите инжектор, нажав Ctrl + C.
Чтобы запустить пример конвейера GameStats:
- Сначала нужно запустить инжектор (
MY_TOPIC_NAME
будет создано, если он не существует):
GOOGLE_APPLICATION_CREDENTIALS=CREDENTIALS_FILE mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.complete.game.injector.Injector -Dexec.args="MY_PROJECT MY_TOPIC_NAME none"
Затем мы создаем выходной набор данных в BigQuery:
bq mk MY_DATASET
Наконец мы запускаем конвейер LeaderBoard:
mvn compile exec:java -Pdataflow-runner -Dexec.mainClass=org.apache.beam.examples.complete.game.GameStats -Dexec.args="--project=MY_PROJECT --tempLocation=gs://MY_BUCKET_NAME/tmp --runner=DataflowRunner --dataset=MY_DATASET --topic=projects/MY_PROJECT/topics/MY_TOPIC_NAME"
Посмотрите на таблицу, созданную в MY_DATASET
, чтобы увидеть выходные данные во время работы конвейера.
Отмените конвейер, нажав Ctrl + C.
Остановите инжектор, нажав Ctrl + C.