【问题标题】:How to convert an Avro data file to CSV [closed]如何将 Avro 数据文件转换为 CSV [关闭]
【发布时间】:2014-07-10 18:35:05
【问题描述】:

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

【问题讨论】:

  • Avro 缓冲区可能是一个复杂的数据,为什么需要 csv 格式的数据。 JSON 更可取。
  • avro 是否能够存储更复杂的数据完全无关紧要:您有时需要其他格式的数据。

标签: csv hadoop avro


【解决方案1】:

我问了同样的问题,我只是使用 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()
    

    【讨论】:

    • 使用 spark-shell --packages com.databricks:spark-avro_2.11:4.0.0 启动 spark shell。在github.com/databricks/… 找到它
    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      还有一个在线将 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,但它是一个需要在该框架中编程的解决方案.

      【讨论】:

        猜你喜欢
        • 2023-03-30
        • 1970-01-01
        • 1970-01-01
        • 2012-08-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-05-06
        • 2014-07-24
        相关资源
        最近更新 更多