首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Spark RDD读取Kryo文件

从Spark RDD读取Kryo文件
EN

Stack Overflow用户
提问于 2014-05-13 04:01:08
回答 1查看 3.5K关注 0票数 2

我是Spark & Scala新手。

我需要读取和分析Spark中的一个文件,该文件是在我的scala代码中使用Kryo序列化编写的:

代码语言:javascript
复制
import com.esotericsoftware.kryo.Kryo
import com.esotericsoftware.kryo.io.Output

val kryo:Kryo = new Kryo()
val output:Output = new Output(new FileOutputStream("filename.ext",true))

//kryo.writeObject(output, feed) (tested both line)
kryo.writeClassAndObject(output, myScalaObject)

这是一个伪代码,用于创建一个序列化了我的对象(myScalaObject)的文件,这是一个复杂的对象。

这个文件看起来写得很好,但是当我在Spark RDD中读取它时,我遇到了问题

Spark中的伪代码:

代码语言:javascript
复制
val conf = new SparkConf()
    .setMaster("local")
    .setAppName("My application")
    .set("spark.executor.memory", "1g")


conf.set("spark.serializer", "org.apache.spark.serializer.KryoSerializer")
conf.set("spark.kryo.registrator", "myScalaObject")

val sc = new SparkContext(conf)

val file=sc.objectFile[myScalaObject]("filename.ext")

val counts = file.count()

当我试图执行它时,我收到了这个错误:

代码语言:javascript
复制
org.apache.spark.SparkException: 
Job aborted: Task 0.0:0 failed 1 times (most recent failure: 
Exception failure: java.io.IOException: file: filename.ext not a SequenceFile)

可以在Spark中读取这种类型的文件吗?

如果这个解决方案不可行,那么创建一个复杂文件结构来读取Spark有什么好的解决方案呢?

谢谢

EN

回答 1

Stack Overflow用户

发布于 2014-06-02 20:35:29

如果你想用objectFile读数据,用saveAsObjectFile写出数据。

代码语言:javascript
复制
val myObjects: Seq[MyObject] = ...
val rddToSave = sc.parallelize(myObjects) // Or better yet: construct as RDD from the start.
rddToSave.saveAsObjectFile("/tmp/x")
val rddLoaded = sc.objectFile[MyObject]("/tmp/x")

或者,正如zsxwing所说,您可以创建文件名的RDD,并使用map读取每个文件名的内容。如果希望将每个文件读取到单独的分区中,请将文件名并行到单独的分区中:

代码语言:javascript
复制
def loadFiles(filenames: Seq[String]): RDD[Object] = {
  def load(filename: String): Object = {
    val input = new Input(new FileInputStream(filename))
    return kryo.readClassAndObject(input)
  }
  val partitions = filenames.length
  return sc.parallelize(filenames, partitions).map(load)
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23617783

复制
相关文章

相似问题

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