**结束。**此问题不符合堆栈溢出准则。它目前不接受答案。**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
8个月前关门了。改进这个问题我有一个avro数据文件,我需要把它转换成csv文件。avrototext工具目前不支持使用自定义模式。有没有什么工具可以做到这一点?我需要用avro工具来编写代码吗?
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)
2eafrhcq2#
在spf4j avro库中,有简单的csv编码器和解码器用于avro实现avro编码器和解码器接口(就像可用的实现(二进制和json)一样。csv编码器/解码器将从/解码到csv,只要您的模式符合array,其中记录不能有array和map字段类型。代码为csv。如果您想了解如何利用它,这里有一个关于如何在上实现jax-rs消息体(reader/writer)的示例。
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()
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 但它是一个需要在该框架中编程的解决方案。
4条答案
按热度按时间fykwrbwg1#
我问了同样的问题,我只是用spark api来完成:
将数据读取为:
或者
然后你可以这样做:
然后要查看结果,您可以通过如下方式检查:
2eafrhcq2#
在spf4j avro库中,有简单的csv编码器和解码器用于avro实现avro编码器和解码器接口(就像可用的实现(二进制和json)一样。csv编码器/解码器将从/解码到csv,只要您的模式符合array,其中记录不能有array和map字段类型。
代码为csv。如果您想了解如何利用它,这里有一个关于如何在上实现jax-rs消息体(reader/writer)的示例。
o75abkj43#
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 但它是一个需要在该框架中编程的解决方案。