Spark将字节保存为音频文件

时间:2018-01-31 01:59:43

标签: apache-spark pyspark

我有一堆序列文件,其中键是字符串,值本身就是构成整个音频文件的字节。

我能够在Spark中成功加载这些序列文件:

     val data = sc.sequenceFile(inputPath, classOf[Text], classOf[BytesWritable]).map{case (key, value) => value.copyBytes}

我想将这些值单独存储在HDFS上,作为音频文件,但我无法弄清楚如何做到这一点。我已经尝试了saveAsPickleFile和saveAsObjectFile,但都序列化了数据。什么是最好的方法呢?

1 个答案:

答案 0 :(得分:0)

您可以使用以下选项,

saveAsHadoopFile path,outputFormatClass,keyClass = None,valueClass = None,keyConverter = None,valueConverter = None,conf = None,compressionCodecClass = None

使用旧的Hadoop OutputFormat API(mapred包)将键值对(形式为RDD [(K,V)])的Python RDD输出到任何Hadoop文件系统。如果未指定,将推断键和值类型。使用用户指定的转换器或 org.apache.spark.api.python.JavaToWritableConverter 转换键和值以进行输出。 conf 应用于与此RDD的SparkContext关联的基本Hadoop conf之上,以创建用于保存数据的合并Hadoop MapReduce作业配置。

参数:

  • 路径 - Hadoop文件的路径
  • outputFormatClass - Hadoop OutputFormat的完全限定类名 (例如“org.apache.hadoop.mapred.SequenceFileOutputFormat”)
  • keyClass - 密钥可写类的完全限定类名(例如 “org.apache.hadoop.io.IntWritable”,默认为None)
  • valueClass - 值的完全限定类名可写类(例如 “org.apache.hadoop.io.Text”,默认为None)
  • keyConverter - (默认为无)valueConverter - (默认为无)
  • conf - (默认为无)
  • compressionCodecClass - (默认为无)

希望,这有帮助。