我可以使用sparkDataframe创建序列文件吗?

aij0ehis  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(444)

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

kkih6yb8

kkih6yb81#

afaik除了下面的方法外,dataframe中没有直接可用的本机api

请尝试/思考以下内容(这是Dataframe风格的rdd,灵感来自 SequenceFileRDDFunctions.scala &方法 saveAsSequenceFile )在下面的示例中:
(键,值)对的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()
}

更多信息请参见。。
how-to-write-dataframe-get-from-hive-table-into-hadoop-sequencefile-and-r
序列文件

相关问题