java - 如何为 Spark 中的 SaveAsSequenceFile 方法提供编解码器?

标签 java scala hadoop apache-spark

我正在尝试弄清楚如何将编解码器传递给 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 

<: 是什么意思?我知道编解码器是可选的,因为当我运行上面的代码时它可以工作。有人可以展示一个格式正确的编解码器调用此方法的示例吗?

谢谢!

最佳答案

<:表示你传入的类应该扩展 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

关于java - 如何为 Spark 中的 SaveAsSequenceFile 方法提供编解码器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24554625/

相关文章:

hadoop - TableInputFormat不是软件包org.apache.hadoop.hbase.mapreduce的成员

java - Chrome 正在被自动化测试软件控制

java - 如何在spring jpa中定义单向一对多dto

scala - Scala 3 宏中的显式类型转换

Scala:集合中的连续ID

scala - Spark 窗口函数 rangeBetween 产生不正确的结果

hadoop - Hadoop reducer 中的奇怪错误

hadoop - Pig 服务检查失败使用 - 用户 : rm/sandbox. hortonworks.com@HDP-SANDBOX 不允许模拟 ambari-qa

java - 获取 Android 设备上安装的应用程序数量?

javascript - Ajax功能无法正常工作