如何将avro数据文件转换为csv

eit6fx6z  于 2021-06-03  发布在  Hadoop
关注(0)|答案(4)|浏览(470)

**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

8个月前关门了。
改进这个问题
我有一个avro数据文件,我需要把它转换成csv文件。avrototext工具目前不支持使用自定义模式。有没有什么工具可以做到这一点?我需要用avro工具来编写代码吗?

fykwrbwg

fykwrbwg1#

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

2eafrhcq2#

在spf4j avro库中,有简单的csv编码器和解码器用于avro实现avro编码器和解码器接口(就像可用的实现(二进制和json)一样。csv编码器/解码器将从/解码到csv,只要您的模式符合array,其中记录不能有array和map字段类型。
代码为csv。如果您想了解如何利用它,这里有一个关于如何在上实现jax-rs消息体(reader/writer)的示例。

o75abkj4

o75abkj43#

//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()
8ulbf1ek

8ulbf1ek4#

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

相关问题