我是Spark初学者,读了很多,运行一些样本,但也没有
复杂.
场景:
我正在使用一个小的hdfs集群将传入的消息存储在数据库中.
集群有5个节点,数据分为5个分区.每
分区存储在单独的数据库文件中.因此,每个节点可以处理
它自己分区的数据.
问题:
数据库软件的接口是基于JNI,数据库本身就是
由于技术原因,数据库软件可以维护
一次只有一个活动连接.只能有一个JVM进程
连接到数据库.
由于这个限制,读取和写入数据库必须走
通过相同的JVM进程.
(背景信息:数据库嵌入到进程中,它是基于文件的,
一次只能有一个进程打开它.我可以让它分开运行
过程,但是由于IPC开销会慢一些.我的应用程序
将执行许多全表扫描.额外的写入将被批量化
不是时间关键.)
解决方案:
我在脑海里有几个想法如何解决这个问题,但我不知道他们是否工作
好好跟Spark.
>也许有可能神奇地配置Spark只有一个我的实例
每个节点专有的InputFormat.
>如果我的第一次使用InputFormat,它将启动一个单独的线程
这将创建数据库连接.此线程将继续
作为一个守护进程,只要JVM生活就会活下去.这只会奏效
如果每个节点只有一个JVM.如果Spark启动了多个JVM
相同的节点然后每个都将启动自己的数据库线程,这不会
工作.
>将我的数据库连接移动到每个节点的单独的JVM进程,我的
InputFormat然后使用IPC连接到这个进程.正如我所说,我想避免这种情况.
或者也许你有另一个更好的主意?
我最喜欢的解决方案是#1,紧随其后的是#2.
感谢任何评论和答案!
解决方法
原文地址:https://www.jb51.cc/mssql/81963.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。