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

Scala Spark-任务不可序列化

方梓
2023-03-14
val pairs = ret.cartesian(ret)
    .map {
        case ((k1, v1), (k2, v2)) => ((k1, k2), (v1.toList, v2.toList))
    }
for (pair <- pairs) {
    val test = sc.parallelize(pair._2._1.map(_._1 ))
}
    null

每当我尝试访问sc时,我会得到以下错误。我在这里做错了什么?

共有1个答案

濮阳
2023-03-14

for-complementation只是执行一个pairs.map()

RDD操作由工人执行,要让他们完成这项工作,您发送给他们的任何内容都必须是可序列化的。SparkContext附加到主服务器:它负责管理整个集群。

如果您想创建一个RDD,您必须知道整个集群(这是第2个“D”--分布式的),所以您不能在工人上创建一个新的RDD。而且您可能不想将每一行成对地转换为RDD(并且每一行都具有相同的名称!)不管怎样。

val test = pairs.map( r => r._2._1) 
 类似资料:
  • 我对Spark,Scala和Cassandra都是新手。使用Spark,我试图从MySQL获取一些ID。 我可以看到在控制台打印的ID。 当我试图在每个提取id上运行相同的函数时 它给出与例外相同的例外 在阅读spark-shell中的Apache spark:“sparkException:Task not serializable”后,我尝试将@transient添加到RDDs中

  • 我的spark任务是在运行时抛出不可序列化的任务。谁能告诉我我做错了什么吗? 以下是stacktrace:

  • 问题内容: 我们在Spark上使用Redis来缓存键值对,这是代码: 但是编译器给了我这样的反馈: 有人可以告诉我如何序列化从Redis获得的数据。非常感谢。 问题答案: 在Spark中,s(如此处)上的函数被序列化并发送给执行程序进行处理。这意味着这些操作中包含的所有元素都应该可序列化。 Redis连接不可序列化,因为它打开了到目标DB的TCP连接,该TCP连接已绑定到创建它的机器。 解决方案是

  • 这给出的错误如下,任何帮助将是感激的:

  • 我已经上了三节课 任务未序列化

  • 我想将转换流写入Elasticsearch索引,如下所示: 行抛出错误(见下文)。我尝试了不同的方法来解决这个问题(例如,在旁边添加),但似乎没有任何效果。 它是否与Hadoop的配置有关?(我参考了以下消息:) 更新: