如何将Avro数据文件转换为CSV

时间:2014-07-10 18:35:05

标签: csv hadoop avro

我有一个avro数据文件,我需要将其转换为csv文件。 Avro totext工具目前不支持使用自定义架构。有没有工具可以做到这一点?我是否只需要使用avro工具进行编码?

4 个答案:

答案 0 :(得分:2)

我问了同样的问题,我只是用Spark API来完成这个:

将数据读取为:

val sqlContext = new SQLContext(sc)
val avro = sqlContext.read.format("com.databricks.spark.avro").load("/path/to/your/data")

val sqlContext = new SQLContext(sc)
val avro = sqlContext.avroFile("/path/to/your/data")

然后你可以这样做:

val csv = avro.map(_.mkString(","))

然后要查看结果,您可以查看运行类似的内容:

csv.take(2).foreach(println)

答案 1 :(得分:2)

//Spark2.0 +   
    import com.databricks.spark.avro._

    //Read avro file
    val df = spark.read.avro("/FileStore/tables/279ltrs61490238208016/twitter.avro")
    df.printSchema()
    df.count()
    df.show()


    //Write to csv file
    df.write
      .option("header", "true")
      .csv("/FileStore/tables/279ltrs61490238208016/twitter_out.csv")

    //Read csv file and display contents
    val df1 = spark.read.option("header", true).csv("/FileStore/tables/279ltrs61490238208016/twitter_out.csv")
    df1.count()
    df1.printSchema()
    df1.show()
    df1.count()

答案 2 :(得分:0)

有简单的CSV编码器和解码器,用于在spf4j-avro库中实现avro编码器和解码器接口的avro。 (就像可用的实现二进制和json一样)。只要您的架构符合数组,而记录不能具有数组和映射字段类型,则Csv编码器/解码器将对csv进行编码/解码。

代码位于csv。如果您想了解如何利用它,请举一个示例,说明如何实现JAX-RS MessageBody(Reader / Writer)at

答案 3 :(得分:0)

也有将avro文件在线转换为csv的方法,它对我https://avro-tools.com/avro-viewer-and-converter-to-json-and-csv很有用,我知道的另一种方法是通过Spark https://spark.apache.org/docs/latest/sql-data-sources-avro .html,但这是一个解决方案,需要该框架中进行编程。