当前位置: 首页 > 知识库问答 >
问题:

AWS SNS SDK不适用于spark流媒体

吕冠宇
2023-03-14

我通过spark streaming应用了一个实时异常检测系统。在每个流媒体时间间隔内,如果数据点异常,AWS SNS会发送电子邮件订阅帐户。但是AWS SNS java sdk不喜欢在spark流媒体中工作。下面是错误消息

ERROR StreamingContext:启动上下文时出错,将其标记为停止的java。伊奥。NotSerializableException:已启用数据流检查点,但数据流及其html" target="_blank">函数不可序列化。亚马逊。服务。sns。AmazonSClient序列化堆栈:-对象不可序列化(类:com.amazonaws.services.sns.amazonsClient,值:com.amazonaws.services.sns)。AmazonSNSClient@a99e813)-field(类:wordCount$$anonfun$main$2,名称:snsClient$1,类型:class com.amazonaws.services.sns.amazonsclient)-object(类:wordCount$$anonfun$main$2,)-field(类:org.apache.spark.stream.dstream$$anonfun$foreachRDD$1$$anonfun$apply$mcV$sp$3,名称:cleanedF$1,类型:interface scala.Function1)-object(类org.apache.spark.streaming.dstream.dstream$$anonfun$foreachRDD$1$$anonfun$apply$mcV$sp$3,)-writeObject数据(类:org.apache.spark.stream.dstream.dstream)-object(类org.apache.spark.streaming.dstream.ForEachDStream,org.apache.spark.stream.dstream.dstream)。ForEachDStream@5b56679b)-writeObject数据(类:org.apache.spark.streaming.dstream.dstream checkpointdata)-对象(类org.apache.spark.stream.dstream.dstream checkpointdata,[0个检查点文件

有人有什么想法可以解决它吗...或者有其他解决方案可以在火花流中发送电子邮件

谢谢

共有1个答案

尉迟彬
2023-03-14

错误是Amazon SNSClient实例不可序列化。这可能意味着您已在转换之外实例化它并在转换中使用它。这将导致火花序列化它。

使用非流式spark,您可以尝试在RDD上的mapPartitions函数中实例化AmazonSClient,或者使用spark流式的等效函数。快速浏览流媒体文档有一个部分可能对您有用,它似乎涵盖了高效创建与数据库、外部系统等的连接的类似领域。

主要的一点是,您需要在worker而不是驱动程序上实例化客户机,然后将其发送给worker(这要求实例可序列化)。

 类似资料:
  • 问题内容: 我正在构建一个Android应用,该应用将流传输来自拉丁美洲国家的几个广播电台,我知道可以在android中播放10个广播电台,我从中获得了网址,并使用本教程实际使它们工作(链接已删除,因为它已经死了),但是我遇到的问题是它播放了几秒钟,然后停止播放并继续加载,但没有重新启动流式传输,我的问题是: 如果有人使用过本教程,则可以向我解释如何使它持续不断地播放而不会停止。 有没有更简单的方

  • 我正在尝试从Spark官方网站运行Spark Streaming示例 这些是我在pom文件中使用的依赖项: 这是我的Java代码: 当我尝试从Eclipse运行它时,我遇到以下异常: 我从我的IDE(eclipse)运行它。我是否必须创建并将JAR部署到火花中以使其运行。如果有人知道这个异常,请分享您的经验。提前谢谢

  • 问题内容: 我正在使用Maven 我添加了以下依赖项 我还在代码中添加了jar 它完全可以正常工作,没有任何错误,在通过spark-submit提交时出现以下错误,非常感谢您的帮助。谢谢你的时间。 线程“主要” java.lang.NoClassDefFoundError中的异常:sun.reflect处的KafkaSparkStreaming.sparkStreamingTest(KafkaSp

  • 我正在读这篇博文: http://blog.jaceklaskowski.pl/2015/07/20/real-time-data-processing-using-apache-kafka-and-spark-streaming.html 它讨论了如何使用Spark Streaming和Apache Kafka进行一些近实时处理。我完全理解这篇文章。它确实展示了我如何使用Spark Stream

  • 我需要创建一个android应用程序来显示实时电视源。据网关供应商介绍,该应用程序应该可以播放来自DVB网关多播的实时视频流,它可以流式输出UDP或RTP。我在我的电脑上设置了vlc来输出UDP和RTP,并试图让android播放器显示它们,结果手指断了。过了一会儿,我发现android只支持HTTP/S和RTSP实时流。我尝试了所有的FFMPEG解决方案和不同的媒体播放器,但都没有成功。我不是视

  • 我已经通过。但是,我注意到Reshuffle()没有出现在发行版中。这是否意味着我将不能在任何数据流管道中使用?有什么办法可以绕过这个吗?或者pip包可能只是不是最新的,如果Reshuffle()在github的master中,那么它将在Dataflow上可用? 根据对这个问题的回答,我试图从BigQuery中读取数据,然后在将数据写入GCP存储桶中的CSV中之前对数据进行随机化。我注意到,我用来