【发布时间】:2019-09-18 16:27:16
【问题描述】:
我正在尝试在 Dataflow 上运行我的第一个 Scio 管道。
可以在here 找到相关代码。但是我认为这不是太重要。
我的第一个实验是使用 DirecRunner 读取一些本地 CSV 文件并编写另一个本地 CSV 文件。这按预期工作。
现在,我正在尝试从 GCS 读取文件,将输出写入 BigQuery 并使用 DataflowRunner 运行管道。我已经进行了所有必要的更改(或者这就是我所相信的)。但我无法让它运行。
我已经gcloud auth application-default login 并且当我这样做时
sbt run --runner=DataflowRunner --project=project-id --input-path=gs://path/to/data --output-table=dataset.table
我可以看到 Jb 在 Dataflow 中提交。但是,一小时后作业失败并显示以下错误消息。
工作流程失败。原因:Dataflow 作业似乎卡住了,因为在过去 1 小时内没有看到任何工作人员活动。
(请注意,这项工作在那段时间里什么也没做,因为这是一个实验,所以数据太简单了,需要几分钟时间)。
检查StackDriver可以发现如下错误:
java.lang.ClassNotFoundException: scala.collection.Seq
与一些 jackson 的事情有关:
java.util.ServiceConfigurationError: com.fasterxml.jackson.databind.Module: 提供者 com.fasterxml.jackson.module.scala.DefaultScalaModule 无法实例化
这就是一开始就杀死每个执行者的原因。我真的不明白为什么我找不到 Scala 标准库。
我也尝试先创建一个模板,然后用:
sbt run --runner=DataflowRunner --project=project-id --input-path=gs://path/to/data --output-table=dataset.table --stagingLocation=gs://path/to/staging --templateLocation=gs://path/to/templates/template-1
但是,运行模板后,我得到了同样的错误。
另外,我注意到 staging 文件夹中有很多 jar,但 scala-library.jar 不在其中。
我遗漏了一些明显的东西?
【问题讨论】:
标签: scala spotify-scio