web-dev-qa-db-fra.com

Lecture de fichier Avro dans Spark

J'ai lu un fichier AVRO dans spark RDD et je dois le convertir en un fichier de données SQL. comment je fais ça.

C'est ce que j'ai fait jusqu'à présent.

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)

Quand je fais:

avro.take(1)

Je reviens

res1: Array[(org.Apache.avro.mapred.AvroWrapper[org.Apache.avro.generic.GenericRecord], org.Apache.hadoop.io.NullWritable)] = Array(({"column1": "value1", "column2": "value2", "column3": value3,...

Comment est-ce que je convertis ceci en un dataframe de SparkSQL?

J'utilise Spark 1.6

Quelqu'un peut-il me dire s'il existe une solution facile à ce problème?

3
Gayatri

Pour DataFrame j'irais avec Avro source de données directement :

  • Inclure spark-avro dans la liste des paquets. Pour la dernière version, utilisez:

    com.databricks:spark-avro_2.11:3.2.0
    
  • Chargez le fichier:

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

Si votre projet est maven, ajoutez la dernière dépendance ci-dessous dans pom.xml.

<dependency>
   <groupId>com.databricks</groupId>
   <artifactId>spark-avro_2.11</artifactId>
   <version>4.0.0</version>
</dependency>

Après cela, vous pouvez lire le fichier avro comme ci-dessous

val df=spark.read.format("com.databricks.spark.avro").option("header","true").load("C:\\Users\\alice\\inputs\\sample_data.avro")
0
Manoj Kumar Dhakd