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

无接收器火花蒸汽驱动方法

贺卜霸
2023-03-14

对于使用kafka的Spark流,我们使用Directstream,这是一种无接收器的方法,并将kafka分区映射到Spark RDD分区。目前,我们有一个应用程序,其中我们使用Kafka直接方法并在RDBMS中维护我们的on偏移,

我们有类似的Kinesis吗?当我阅读火花-Kinesis集成的留档时,感觉检查点有所不同。以下是我遇到的一些问题

  1. 使用kinesis流是否将kinesis碎片映射到RDD分区?如果我在传入RDD上使用forEachPartition,是否可以在shard级别维护有序处理
  2. 从文档中可以看出,kinesis在dynamoDB中维护单独的检查点?我们不能忽略它,使用我们自己的抵销管理吗
  3. 在动画片中。createStream api我看到对于[初始位置]变量,它只接受最新或TRIM\u地平线。在这种情况下,我怎么能不能像在Kafka案例中那样提供要偏移的碎片地图

如果我们的应用程序是幂等的,我们怎样才能得到精确的一次处理?

共有1个答案

严元白
2023-03-14

使用kinesis流是否将kinesis碎片映射到RDD分区?

否,如文档中所述,Kinesis碎片和RDD分区之间没有1:1的映射:

在输入数据流处理期间,Kinesis流碎片的数量与Spark集群中创建的RDD分区/碎片的数量之间没有相关性。这是两个独立的分区方案

如果我在传入RDD上使用forEachPartition,是否可以在shard级别维护有序处理?

每个创建的分区,内部保持顺序(不确定是否有帮助):

动觉数据处理按分区排序,每个消息至少发生一次。

从文档中可以看出,kinesis在dynamoDB中维护单独的检查点?我们不能忽略它,使用我们自己的抵销管理吗?

不,您受到使用DyanmoDB作为后备存储的Kinesis客户端实现的约束。

在动画片中。createStream api我看到对于[初始位置]变量,它只接受最新或TRIM\u地平线。在这种情况下,我怎么能不能像在Kafka案例中那样提供要偏移的碎片地图?

不。没有提供等效的Kafka偏移量。

如您所见,当前的Kinesis API实现限制了您。如果您需要偏移存储和恢复的灵活性,并且希望实现一次语义,那么也可以考虑使用Kafka来实现此解决方案。

 类似资料:
  • 目前,我正在群集模式(独立群集)下使用Spark 2.0.0,群集配置如下: 工作线程:使用了4个内核:总共32个,使用了32个内存:总共54.7 GB,使用了42.0 GB 我有4个奴隶(工人)和1台主机。火花盘有三个主要部件-主部件、驱动部件、工作部件(参考) 现在我的问题是,驱动程序正在其中一个工作节点中启动,这阻碍了我在其全部容量(RAM方面)中使用工作节点。例如,如果我在运行spark作

  • 在EMR集群或任何集群中,YARN有可能在同一个EC2实例中分配驱动程序和执行器吗?我想知道驱动程序是否可以利用1个EC2实例的存储和处理能力,或者该实例的某个部分将用于服务集群中运行的其他spark作业。这可能会导致我的驱动程序内存不足。 我认为资源管理器是根据集群资源的可用性来决定的?

  • 我是Spark的初学者,我正在运行我的应用程序,从文本文件中读取14KB的数据,执行一些转换和操作(收集、收集AsMap),并将数据保存到数据库 我在我的macbook上本地运行它,内存为16G,有8个逻辑核。 Java最大堆设置为12G。 这是我用来运行应用程序的命令。 bin/spark-submit-class com . myapp . application-master local[*

  • 我在试着让我的弹性搜索下沉并运行。然而,我得到了以下错误,并正在耗尽如何修复它的想法。任何帮助都很感激。以下是错误: 我运行的是CDH 5.3和elasticsearch 1.4.2

  • 我正在研究建立一个JDBC Spark连接,以便从r/Python使用。我知道和都是可用的,但它们似乎更适合交互式分析,特别是因为它们为用户保留了集群资源。我在考虑一些更类似于Tableau ODBC Spark connection的东西--一些更轻量级的东西(据我所知),用于支持简单的随机访问。虽然这似乎是可能的,而且有一些文档,但(对我来说)JDBC驱动程序的需求是什么并不清楚。 既然Hiv