如何将 Avro 的 GenericData.Record 的 RDD 转换为 DataFrame?

Posted

技术标签:

【中文标题】如何将 Avro 的 GenericData.Record 的 RDD 转换为 DataFrame?【英文标题】:How to convert RDD of Avro's GenericData.Record to DataFrame? 【发布时间】:2016-07-17 10:47:25 【问题描述】:

也许这个问题看起来有点抽象,这里是:

val originalAvroSchema : Schema   = // read from a file
val rdd : RDD[GenericData.Record] = // From some streaming source

// Looking for a handy:
val df: DataFrame   = rdd.toDF(schema)

我探索了spark-avro,但它只支持从文件中读取,而不是从现有的RDD 中读取。

【问题讨论】:

不确定答案被删除的原因 有一个你正在寻找的东西的拉取请求github.com/databricks/spark-avro/pull/113/files 我删除了答案,因为它被否决了。 【参考方案1】:
import com.databricks.spark.avro._

val sqlContext = new SQLContext(sc)
val rdd : RDD[MyAvroRecord] = ...
val df = rdd.toAvroDF(sqlContext)

【讨论】:

以上是关于如何将 Avro 的 GenericData.Record 的 RDD 转换为 DataFrame?的主要内容,如果未能解决你的问题,请参考以下文章

如何将 Avro 文件加载到具有“时间戳”类型的列的 BigQuery 表中

如何将嵌套的 Avro 字段作为单个字段复制到 Redshift?

如何将 AVRO 文件中的整数值加载到 bigquery 中的日期列?

如何使用 Nodejs 将本地 Avro 上传到谷歌大查询

如何将 Avro 的 GenericData.Record 的 RDD 转换为 DataFrame?

如何使用 Python 在现有 AVRO 文件中追加数据