2

我有一个要求,我需要创建一个序列文件。现在我们已经在 hadoop api 之上编写了自定义 api,但是由于我们在 spark 中移动,我们必须使用 spark 来实现相同的目标。可以使用 spark 数据帧来实现吗?

4

1 回答 1

1

AFAIK除了以下方法外, DataFrame中没有直接可用的原生 api


请在下面的示例中尝试/思考类似的事情(这是 DataFrame 样式的 RDD,受SequenceFileRDDFunctions.scala& 方法的启发saveAsSequenceFile):

(key, value) 对的 RDD 上可用的额外函数通过隐式转换创建 Hadoop SequenceFile。

import org.apache.spark.{SparkConf, SparkContext}
import org.apache.spark.rdd.SequenceFileRDDFunctions
import org.apache.hadoop.io.NullWritable

object driver extends App {

   val conf = new SparkConf()
        .setAppName("HDFS writable test")
   val sc = new SparkContext(conf)

   val empty = sc.emptyRDD[Any].repartition(10)

   val data = empty.mapPartitions(Generator.generate).map{ (NullWritable.get(), _) }

   val seq = new SequenceFileRDDFunctions(data)

   // seq.saveAsSequenceFile("/tmp/s1", None)

   seq.saveAsSequenceFile(s"hdfs://localdomain/tmp/s1/${new scala.util.Random().nextInt()}", None)
   sc.stop()
}

更多信息请参阅..

于 2016-11-27T18:30:05.950 回答