web-dev-qa-db-ja.com

Sparkで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を使用しています

これについて簡単な解決策があるかどうか誰にも教えてもらえますか?

6
Gayatri

DataFrameの場合は、Avroを使用します データソースを直接

  • パッケージリストにspark-avroを含めます。最新バージョンを使用する場合:

    com.databricks:spark-avro_2.11:3.2.0
    
  • ファイルをロードします。

    val df = spark.read
      .format("com.databricks.spark.avro")
      .load(path)
    
10
hi-zir

プロジェクトが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")
0