在 Spark 中读取 Avro 文件
Reading Avro File in Spark
我已将一个 avro 文件读入 spark RDD,需要将其转换为 sql 数据帧。我该怎么做。
这是我目前所做的。
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 数据框?
我正在使用 Spark 1.6
谁能告诉我是否有解决此问题的简单方法?
对于 DataFrame
我会选择 Avro data source directly:
在包列表中包含 spark-avro。对于最新版本,请使用:
com.databricks:spark-avro_2.11:3.2.0
加载文件:
val df = spark.read
.format("com.databricks.spark.avro")
.load(path)
如果你的项目是 maven 那么在 pom.xml
中添加下面最新的依赖
<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-avro_2.11</artifactId>
<version>4.0.0</version>
</dependency>
之后您可以阅读 avro
如下文件
val df=spark.read.format("com.databricks.spark.avro").option("header","true").load("C:\Users\alice\inputs\sample_data.avro")
我已将一个 avro 文件读入 spark RDD,需要将其转换为 sql 数据帧。我该怎么做。
这是我目前所做的。
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 数据框?
我正在使用 Spark 1.6
谁能告诉我是否有解决此问题的简单方法?
对于 DataFrame
我会选择 Avro data source directly:
在包列表中包含 spark-avro。对于最新版本,请使用:
com.databricks:spark-avro_2.11:3.2.0
加载文件:
val df = spark.read .format("com.databricks.spark.avro") .load(path)
如果你的项目是 maven 那么在 pom.xml
中添加下面最新的依赖<dependency>
<groupId>com.databricks</groupId>
<artifactId>spark-avro_2.11</artifactId>
<version>4.0.0</version>
</dependency>
之后您可以阅读 avro
如下文件
val df=spark.read.format("com.databricks.spark.avro").option("header","true").load("C:\Users\alice\inputs\sample_data.avro")