spark任务执行器工作时如何在java并发java列表中存储多个json对象

fjaof16o  于 2021-06-01  发布在  Hadoop
关注(0)|答案(1)|浏览(302)

我正在尝试通过多个spark任务执行器填充特定列表类型的数据结构。所以,我在寻找原子性。
所以,我得说10排。每行有m个键值对。键1-val1,…键m valm。
现在,我的任务执行者正在尝试在dynamodb这样的数据库中接收这些行。我的数据库摄取器已编写onsuccess onfailure处理程序。我想知道我是否可以确保我有一个“并发”列表,其中每个项目指向一行,即每行有m个键值对。
要使用的数据结构。因为这是由任务执行器调用的,所以我想到了使用linkedblockingqueue。但确切的藏品是什么呢。
这个阻塞队列看起来正常吗?但阻塞队列中的每个元素如何包含键值对列表呢?

2nc8po8w

2nc8po8w1#

如果您希望在spark中累积任务的结果,那么应该使用spark的累加器框架。你读过这个框架吗here:- https://spark.apache.org/docs/2.2.0/rdd programming guide.html#累加器。
在平面java并发的情况下,如果您只想存储来自不同线程的值,那么不需要使用阻塞队列,只需使用concurrenthashmap即可。其中,键是从1到10的数字,值可以是concurrentlinkedqueue类型,它可以包含键值对。

相关问题