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

最佳答案

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

请尝试/考虑以下示例中的某些内容(这是DataFrame样式的RDD,受SequenceFileRDDFunctions.scala和方法saveAsSequenceFile启发):

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()
}
请参阅更多信息。
  • how-to-write-dataframe-obtained-from-hive-table-into-hadoop-sequencefile-and-r
  • sequence file
  • 关于hadoop - 我可以使用spark数据框创建序列文件吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40832023/

    10-14 13:55