【问题标题】:How to provide a codec to the SaveAsSequenceFile method in Spark?如何为 Spark 中的 SaveAsSequenceFile 方法提供编解码器?
【发布时间】:2014-07-03 13:10:59
【问题描述】:

我试图弄清楚如何将编解码器传递给 Apache Spark 中的 saveAsSequenceFile 方法。下面是我试图运行的代码。我正在运行 Scala 2.10.4、Spark 1.0.0、Java 1.7.60 和 Apache Hadoop 2.4.0。

val rdd:RDD[(String, String)] = sc.sequenceFile(secPath,
                                classOf[Text],
                                classOf[Text]
                               ).map { case (k,v) => (k.toString, v.toString)}

val sortedOutput = rdd.sortByKey(true, 1)

sortedOutput.saveAsSequenceFile(secPathOut)

我的问题是我是 Spark 和 Scala 的新手。我不明白 javadoc 对传递给 saveAsSequenceFile 方法的编解码器变量意味着什么。

def saveAsSequenceFile(path: String, codec: Option[Class[_ <: CompressionCodec]] = None): Unit 

<:>

谢谢!

【问题讨论】:

    标签: java scala hadoop apache-spark


    【解决方案1】:

    &lt;: 表示你传入的类应该扩展org.apache.hadoop.io.compress.CompressionCodec(阅读this),spark 使用了很多 HDFS 功能并且在这一点上与它高度集成。这意味着您可以将以下任何类作为编解码器传递,BZip2Codec, DefaultCodec, GzipCodecCompressionCodec 的其他扩展可能还没有内置在 hadoop 中。下面是调用方法的例子

    sc.parallelize(List((1,2))).saveAsSequenceFile("path",Some(classOf[GzipCodec]))
    

    Option[...] 在 scala 中用于支持 java 的 null,即使 null 存在于 scala 中。 Option 可以是Some(...)None

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 2015-09-10
      • 2015-03-15
      • 1970-01-01
      相关资源
      最近更新 更多