本文介绍了在Spark中读取Avro文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我已经将avro文件读入spark RDD,需要将其转换为sql数据框.我该怎么做.
I have read an avro file into spark RDD and need to conver that into a sql dataframe. how do I do that.
这是我到目前为止所做的.
This is what I did so far.
import org.apache.avro.generic.GenericRecord
import org.apache.avro.mapred.{AvroInputFormat, AvroWrapper}
import org.apache.hadoop.io.NullWritable
val path = "hdfs://dds-nameservice/user/ghagh/"
val avroRDD = sc.hadoopFile[AvroWrapper[GenericRecord], NullWritable, AvroInputFormat[GenericRecord]](path)
当我这样做时:
avro.take(1)
我回来了
res1: Array[(org.apache.avro.mapred.AvroWrapper[org.apache.avro.generic.GenericRecord], org.apache.hadoop.io.NullWritable)] = Array(({"column1": "value1", "column2": "value2", "column3": value3,...
如何将其转换为SparkSQL数据框?
How do I convert this to a SparkSQL dataframe?
我正在使用Spark 1.6
I am using Spark 1.6
有人可以告诉我是否有一个简单的解决方案吗?
Can anyone tell me if there is an easy solution around this?
推荐答案
对于 DataFrame
,我会和Avro一起使用直接数据源:
For DataFrame
I'd go with Avro data source directly:
-
在软件包列表中包含spark-avro.对于最新版本,请使用:
Include spark-avro in packages list. For the latest version use:
com.databricks:spark-avro_2.11:3.2.0
加载文件:
Load the file:
val df = spark.read
.format("com.databricks.spark.avro")
.load(path)
这篇关于在Spark中读取Avro文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!