运行 apache beam 移动游戏教程的命令是什么?

What's the commands to run the apache beam mobile gaming tutorials?

我是 Apache Beam 的新手。我正在阅读字数统计和移动游戏教程。对于字数统计,给出了 运行 管道的命令。但是,运行 Mobile Gaming 教程中没有给出任何命令。

https://beam.apache.org/get-started/wordcount-example/

https://beam.apache.org/get-started/mobile-gaming-example/

代码中有注释,可帮助我了解如何 运行 前两个批处理管道。但是,我不确定关于最后两个流媒体管道的命令。

评论里也提到用Injector生成Pub/Sub数据。我想它可能需要几个步骤才能成功 运行 这些流媒体管道。例如,创建 BigQuery table,生成 pubsub 数据,运行 终端命令,...

有人可以帮我看看怎么做吗?谢谢!

我已经在 Google Cloud Shell.

上使用以下命令尝试了前两个批处理管道
mvn compile exec:java -Dexec.mainClass=org.apache.beam.examples.complete.game.UserScore 
-Dexec.args="--runner=DataflowRunner 
--project=MY_PROJECT_NAME 
--tempLocation=gs://MY_BUCKET_NAME/tmp 
--output=gs://MY_BUCKET_NAME/userScore" -Pdataflow-runner

我概述了下面的所有步骤,即使您还没有开始。这将帮助可能卡在不同步骤的其他用户。

您首先需要从 Apache Beam 示例原型创建 Maven 项目:

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

(一次性设置)

Enable APIs 在您的 GCP 项目中。

使用 gcloud 设置您的默认应用程序凭据,以便您可以创建 Dataflow 管道。

gcloud auth application-default login

创建一个 GCS 存储桶,它是 writable 以供以下命令使用。


要运行 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。

(一次性设置) 在我们 运行 喷油器之前。我们需要在本地创建一组凭证,这将允许我们 运行 注入器而不 运行 进入 Pubsub 配额问题。为此,您应该:

  1. Create a service account within your GCP project. The service account should have access to Dataflow, GCS, Pubsub & BigQuery. Remember the service account e-mail address associated with it.
  2. 获取服务帐户凭据并将其保存到 CREDENTIALS_FILE
gcloud iam service-accounts keys create CREDENTIALS_FILE --iam-account MY_SERVICE_ACCOUNT_EMAIL

至 运行 LeaderBoard 示例管道:

  1. 我们首先需要启动注入器(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"
  1. 然后我们在 BigQuery 中创建输出数据集:
bq mk MY_DATASET
  1. 最后我们 运行 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"
  1. 查看在 MY_DATASET 中创建的 table 以查看输出,因为管道是 运行ning。

  2. 按 Ctrl+C 取消管道。

  3. 按 Ctrl+C 停止 Injector。


至 运行 GameStats 示例管道:

  1. 我们首先需要启动注入器(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"
  1. 然后我们在 BigQuery 中创建输出数据集:
bq mk MY_DATASET
  1. 最后我们 运行 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"
  1. 查看在 MY_DATASET 中创建的 table 以查看输出,因为管道是 运行ning。

  2. 按 Ctrl+C 取消管道。

  3. 按 Ctrl+C 停止 Injector。

假设您已经设置了 word-count maven 项目,mobile-gaming 示例的 java 代码是在同一个项目中。您可以 运行 假设第一个示例名为 UserScore 通过执行此命令。

mvn compile exec:java \
-Dexec.mainClass=org.apache.beam.examples.complete.game.UserScore \
-Dexec.args="--output=user-scores"

此 public 的输入 GCS 存储桶,但您仍然需要使用

进行一次身份验证
 gcloud auth login

输出将写入前缀为 user-scores

的文件中