scala - 找不到:在spark scala中键入MultipleTextOutputFormat

标签 scala hadoop apache-spark

我需要根据键输出分区。我正在尝试使用MultipleTextOutputFormat

我发现了这个https://stackoverflow.com/a/26051042/6561443

但是当我尝试在spark-shell中执行相同操作时,出现错误。

scala> import org.apache.hadoop.io.NullWritable
import org.apache.hadoop.io.NullWritable

scala> import org.apache.spark._
import org.apache.spark._

scala> import org.apache.spark.SparkContext._
import org.apache.spark.SparkContext._

scala> import org.apache.hadoop.mapred.lib.MultipleTextOutputFormat
import org.apache.hadoop.mapred.lib.MultipleTextOutputFormat

scala> class RDDMultipleTextOutputFormat extends MultipleTextOutputFormat[Any, Any] {
        override def generateActualKey(key: Any, value: Any): Any =
          NullWritable.get()
             override def generateFileNameForKeyValue(key: Any, value: Any, name: String): String =
          key.asInstanceOf[String]
      }

<console>:11: error: not found: type MultipleTextOutputFormat
       class RDDMultipleTextOutputFormat extends MultipleTextOutputFormat[Any, Any] {
                                                 ^
<console>:13: error: not found: value NullWritable
           NullWritable.get()

如果我通过spark-submit提交此申请,
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1

我在这里想念什么吗?它不能在 Spark 壳中工作吗?

最佳答案

我遇到了同样的问题。
尝试写

class RDDMultipleTextOutputFormat extends org.apache.hadoop.mapred.lib.MultipleTextOutputFormat[Any, Any] {

代替。
为我工作。不知道为什么。

关于scala - 找不到:在spark scala中键入MultipleTextOutputFormat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49049839/

相关文章:

scala - 什么时候在 Scala 中使用 SBT 和 Ivy 模棱两可地选择具有相同定义和类路径的两个类?

hadoop - 无法开始在浏览器上运行Hadoop的namenode

scala - 如何在流数据集上执行 df.rdd 或 df.collect().foreach?

Scala:使用 log4j 将日志写入文件

scala - 如何使用spark比较两个文件?

mongodb - 将 scala/spark 信息写入 MongoDB

java - Spark-如何将每n行写入不同的输出文件?

scala - 为什么 Scala 不能从隐含证据中推断出类型

hadoop - Hadoop 2.8 NodeManager在Windows上关闭

java - 使用 Spark Java API 2.2 使用列不是数字的地方过滤数据集?