我可以使用spark数据帧创建序列文件吗?

时间:2016-11-27 17:54:12

标签: hadoop apache-spark spark-dataframe sequencefile outputformat

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

1 个答案:

答案 0 :(得分:1)

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

请尝试/思考以下示例中的某些内容(这是DataFrame样式的RDD,灵感来自SequenceFileRDDFunctions.scala&方法saveAsSequenceFile):

  

Extra functions available on RDDs of (key, value) pairs to create a Hadoop SequenceFile, through an implicit conversion.

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()
}

更多信息请参阅..