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

与Spark系列化混淆

章禄
2023-03-14

我需要读取几个csv文件,并将几个列从字符串转换为双精度。

代码如下:

  def f(s:String):Double = s.toDouble

  def readonefile(path:String) = {
    val data = for {
      line <-  sc.textFile( path )
      arr = line.split(",").map(_.trim)
      id = arr(33)
    } yield {
        val countings = ((9 to 14) map arr).toVector map f
        id -> countings.toVector
      }
    data
  }

如果我显式地编写toDouble(例如,代码中的函数f),spark会抛出错误java。伊奥。IOExceptionjava。lang.exceptionininitializerror

但是如果我将计数更改为

val countings=((9到14)map arr)。toVector map(u.toDouble)

然后一切正常。

函数f可序列化吗?

编辑:

有人说这和任务不可序列化是一样的:java。伊奥。NotSerializableException当只对类而不是对象调用闭包外的函数时,为什么不抛出Task not serializableexception?

Scala 2.10版

Spark版本1.3.1

环境:纱线客户

共有1个答案

龙永逸
2023-03-14

我们可以把函数f移到一个伴星上。我还使转换避免了for循环,我不确定它是否在做你想要的事情。请注意,您可能希望使用spark csv,而不只是在逗号上拆分,但希望这能说明这一点:

  object Panda {
    def f(s:String):Double = s.toDouble
  }

  def readonefile(path:String) = {
      val input = sc.textFile( path )
      arrs = input.map(line => line.split(",").map(_.trim))
      arrrs.map(arr => (arr(33).toDouble,
                        ((9 to 14) map arr).map(Panda.f).toVector)
  }
 类似资料:
  • 当以下转换在将RDD写入文件之前执行时,它们之间有什么区别? 聚结(1,洗牌=true) 合并(1,洗牌=假) 代码示例: 它与collect()相比如何?我完全知道Spark save方法将以HDFS风格的结构存储它,但我更感兴趣的是collect()和shuffled/non shuffled coalesce()的数据分区方面。

  • (我在UTC 2时区,我假设是2小时的差异)。 我正忙于编写一个JSON RESTful API,它是Grails应用程序的一部分(特别是本项目的2.0.3,但这个问题在其他版本中也会出现)。我使用Jackson对Json进行序列化和反序列化,JsonService的配置如下所示:http://pastebin.com/JacytMuF 因此,多个域对象的值在单个DTO中进行了整理和表示(在本例中

  • 在Spark中,如何知道哪些对象在driver上实例化,哪些对象在executor上实例化,因此如何确定哪些类需要实现Serializable?

  • 在过去的几个月里,我已经使用了相当多的结构化流来实现流作业(在大量使用Kafka之后)。在阅读了《Stream Processing with Apache Spark》一书之后,我有这样一个问题:有没有什么观点或用例可以让我使用Spark Streaming而不是Structured Streaming?如果我投入一些时间来研究它,或者由于im已经使用了Spark结构化流,我应该坚持使用它,而之

  • FAQs in section [36]: [36.1]“序列化”是什么东东? [36.2] 如何选择最好的序列化技术? [36.3] 如何决定是要序列化为可读的(“文本”)还是不可读的(“二进制”)格式? or non-human-readable ("binary") format?") [36.4] 如何序列化/反序列化数字,字符,字符串等简单类型? [36.5] 如何读/写简单类型为可读的

  • 上一小节我们学习了 Java 的输入输出流,有了这些前置知识点,我们就可以学习 Java 的序列化了。本小节将介绍什么是序列化、什么是反序列化、序列化有什么作用,Serializable 接口以及 Externalizable 接口,常用序列化工具介绍等内容。 1. 序列化与反序列化 序列化在计算机科学的数据处理中,是指将数据结构或对象状态转换成可取用格式,以留待后续在相同或另一台计算机环境中,能