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

问题描述 投票:6回答:4

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

csv hadoop avro
4个回答
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)

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()

0
投票

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

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


0
投票

还有这种从avro文件到csv的在线转换器,对我https://avro-tools.com/avro-viewer-and-converter-to-json-and-csv来说已经很有用,我知道的另一种方式是通过Sparkhttps://spark.apache.org/docs/latest/sql-data-sources-avro.html,但这是一个需要在该Framework中进行编程的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.