首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >spark驱动程序如何将套接字对象传输到worker?

spark驱动程序如何将套接字对象传输到worker?
EN

Stack Overflow用户
提问于 2019-08-03 12:53:34
回答 2查看 92关注 0票数 0

我有一个关于spark的问题。如果我在spark驱动程序上定义了到远程服务器的长期套接字连接,我还可以使用该套接字与spark worker.How上的远程服务器通信。

例如,我在spark driver上定义了一个redis客户端,我也可以通过spakr worker上的redis客户端来读写数据。

代码语言:javascript
复制
val redisClient = Jedis.RedisClient(host, port)
rdd1.map(x => {
  val value = redisClient.get(x)
  value
})

也许redis并不是一个完全正确的例子。我想知道spark是否可以将我的长期套接字连接从司机转移到工人。

EN

回答 2

Stack Overflow用户

发布于 2019-08-04 01:43:07

简而言之,由于套接字连接是不可序列化的,因此无法通过网络进行传输。

根据您实际尝试做的事情,您可能能够传输足以在worker上建立套接字连接的元数据,这将允许每个worker建立任意多个连接,例如,如果您希望允许worker与Redis通信。

票数 0
EN

Stack Overflow用户

发布于 2019-08-04 16:37:31

RedisClient是不可序列化的,因此您的驱动程序无法将其传递给您的执行器。试试这个:

代码语言:javascript
复制
rdd.mapPartitions(partition => {
  val redisClient = Jedis.RedisClient(host, port)
  partition.map(redisClient.get)
})

这样,您就可以在每个Executor上创建自己的客户端。没有serde

希望能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57335557

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档