数据库 – Spark:运行InputFormat作为单例

前端之家收集整理的这篇文章主要介绍了数据库 – Spark:运行InputFormat作为单例前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试将一个键值数据库集成到Spark,并提出一些问题.
我是Spark初学者,读了很多,运行一些样本,但也没有
复杂.

场景:

我正在使用一个小的hdfs集群将传入的消息存储在数据库中.
集群有5个节点,数据分为5个分区.每
分区存储在单独的数据库文件中.因此,每个节点可以处理
它自己分区的数据.

问题:

数据库软件的接口是基于JNI,数据库本身就是
由于技术原因,数据库软件可以维护
一次只有一个活动连接.只能有一个JVM进程
连接到数据库.

由于这个限制,读取和写入数据库必须走
通过相同的JVM进程.

(背景信息:数据库嵌入到进程中,它是基于文件的,
一次只能有一个进程打开它.我可以让它分开运行
过程,但是由于IPC开销会慢一些.我的应用程序
将执行许多全表扫描.额外的写入将被批量化
不是时间关键.)

解决方案:

我在脑海里有几个想法如何解决这个问题,但我不知道他们是否工作
好好跟Spark.

>也许有可能神奇地配置Spark只有一个我的实例
每个节点专有的InputFormat.
>如果我的第一次使用InputFormat,它将启动一个单独的线程
这将创建数据库连接.此线程将继续
作为一个守护进程,只要JVM生活就会活下去.这只会奏效
如果每个节点只有一个JVM.如果Spark启动了多个JVM
相同的节点然后每个都将启动自己的数据库线程,这不会
工作.
>将我的数据库连接移动到每个节点的单独的JVM进程,我的
InputFormat然后使用IPC连接到这个进程.正如我所说,我想避免这种情况.
或者也许你有另一个更好的主意?

我最喜欢的解决方案是#1,紧随其后的是#2.

感谢任何评论和答案!

解决方法

你是否想过排队(缓冲区),然后使用火花流排队并使用您的输出格式进行写入.

猜你在找的MsSQL相关文章