为什么从 AWS Glue (Spark) 写入 kinesis 时出现“无法找到数据源”错误

问题描述 投票:0回答:1

我正在尝试从几个来源获取一些数据,对其进行一些转换,然后使用 AWSglue 和 scala 将其加载到 Kinesis 中。数据来自表和 s3 存储桶等静态源,因此它不是流式 ETL 作业。目前我正在使用动态框架并尝试获取我的数据接收器并简单地执行 writeDynamicFrmae 像这样

// some logic to set up a source and do some transformations ending up with a Dynamic frame called myDynamicFrame

val kinesis = glueContext.getSinkWithFormat(
  conectionType = "kinesis",
  options = JsonOptions(
    Map(
      "streamArn" -> "arn:aws:kinesis:xxxxxxxxxxx/sink-stream",
      "startingPosition" -> "TRIM_HORIZON"
      "inferSchema" -> "true"
    )
  )
)

kinesis.writeDynamicFrame(myDynamicFrame)

我的想法是,这将从动态框架中获取数据并将其推送到运动中,但我却得到了这个错误。

Error writing to Kinesis: Failed to find data source: kinesis. Please find packages at https://spark.apache.org/third-party-projects.html

我使用的是glue版本4,在文档中它说你可以指定kinesis https://docs.aws.amazon.com/glue/latest/dg/glue-etl-scala-apis-glue-gluecontext.html #glue-etl-scala-apis-glue-gluecontext-defs-getSinkWithFormat

还有一些其他文档讨论了从数据帧创建编写器并使用 forEachBatch 方法,但这些文档看起来像是指以 kinesis 为源的作业,并且它是一个流式 etl 作业,我认为这不是因为我们'正在从 s3 批量获取数据。

如果它有助于其scala版本2.12.19 Spark 3.3和glue v4

amazon-web-services scala apache-spark aws-glue
1个回答
0
投票

事实证明,这个文档有点参差不齐,连接类型需要是“aws-kinesis”而不仅仅是“kinesis”

© www.soinside.com 2019 - 2024. All rights reserved.