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

Posted

技术标签:

【中文标题】我可以使用 spark 数据帧创建序列文件吗?【英文标题】:Can I create sequence file using spark dataframes? 【发布时间】:2016-11-27 17:54:12 【问题描述】:

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

【问题讨论】:

我不知道是否有使用 DataFrame API 编写序列文件的功能,但您总是可以获取 DataFrame 的 RDD,然后使用 rdd.saveAsSequenceFile 方法来实现您想要的。跨度> 【参考方案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()

更多信息请参阅..

how-to-write-dataframe-obtained-from-hive-table-into-hadoop-sequencefile-and-r

sequence file

【讨论】:

同意gasparms请查看我的回答 对您有帮助吗? 谢谢 Ram,我的要求是我必须从 dataframewriter 创建一个序列文件,有什么方法可以实现吗? AFAIK 没有直接的DataFrame API 可用。我在答案的第一行中添加了 您好,除了 RDD 方法之外,您还有什么发现吗?如果是,请。分享你的想法。

以上是关于我可以使用 spark 数据帧创建序列文件吗?的主要内容,如果未能解决你的问题,请参考以下文章

通过在spark中使用scala加载csv文件来创建数据帧

我无法从数据块中的 spark 数据帧创建加载数据到 Azure Synapse (DWH)

pyspark如何检查给定的spark数据帧是不是已使用inferSchema = True创建

我们可以使用 Spark Scala 创建具有特定节点的 xml 文件吗?

从来自 java 中 InputStream 的字符串创建 Spark RDD 或数据帧

Unity 2D:创建序列帧动画