StreamingQueryException:'描述流时出错\ n ===流查询

问题描述

我在运行无法连接到Kinesis数据源的glue Streaming作业时感到错误以下:

错误

WARNING:root:StreamingQueryException caught. Retry number 10 ERROR:root:Exceeded maximuim number of retries in streaming interval,exception thrown Parse yarn logs get error message:  
StreamingQueryException: 'Error while Describe Streams\n=== Streaming Query ===\nIdentifier: [id = 60exxxxxxxxxxxxx

以下是我使用过的一组罐子:

spark-tags_2.11-2.4.0.jar,spark-streaming-kinesis-asl_2.11-2.4.0.jar,spark-streaming_2.11-2.4.0.jar,aws-java-sdk-sts-1.11.271.jar,amazon-kinesis-client-1.8.10.jar,spark-sql_2.11-2.4.0.jar

#####################################################################

spark-tags_2.11-2.4.3.jar,spark-streaming-kinesis-asl_2.11-2.4.3.jar,jackson-dataformat-cbor-2.6.7.jar,unused-1.0.0.jar,spark-sql_2.11-2.4.3.jar

##########################################
spark-sql-kinesis_2.11-1.1.3-spark_2.4.jar,spark-tags_2.11-2.4.0.jar,scala-library-2.11.12.jar,spark-sql_2.11-2.4.0.jar

请提出建议,因为关于胶水流和Kinesis集成的信息非常少而含糊。

解决方法

以 Kinesis 为源的 Glue Streaming 使用 qubole/kinesis-sql 版本 该 Github Repo 上的示例应该是一个很好的起点。还有这个 blog 由 qubole 提供。

Kinesis ASL (spark-streaming-kinesis-asl) 使用较旧的 Spark 流 API、InputDStreams 等。Glue 流内置了对 Spark 结构化流 API 的支持,因此如果将 Glue Streaming 与 Kinesis 结合使用,则无需导入所有这些依赖项。如果应用程序必须基于 Kinesis ASL,那么可以尝试构建一个具有所有这些依赖项的 Jar,并将它们作为普通 Glue ETL 作业本身的一部分而不是 Glue 流作业的一部分运行。移植应用程序以使用 spark 结构化 API 会容易得多。

此外,文档上还有一个将结构化流 API 与 Glue 流结合使用的示例 - https://docs.aws.amazon.com/glue/latest/dg/glue-etl-scala-example.html