2017-07-13 2 views
0

nous avons kakfa hdfs connecteur d'écriture dans hdfs au format avro par défaut. Un échantillon o/p:databricks schéma avro ne peut pas être converti en un structtype SQL Spark

Obj^A^B^Vavro.schema "[" null », "string"]^@ ͳø $ {9d <> ¾ã^X: < 8d> uv^K^H5^F °^F^B < 8a>^B {"severity": "avis", "message": "Message de test", "facilité": "kern", "syslog-tag": "sawmill_test:", "timestamp": "2017-01-31T20: 15: 00 + 00: 00"}^B < 8a>^B {"severity": "avis", "message": "Message de test", "facilité": " kern "," syslog-tag ":" scierie_test: "," horodatage ":" 2017-01-31T20: 15: 00 + 00: 00 "}^B < 8a>^B {" gravité ":" avis ", "message": "Message de test", "facilité": "kern", "syslog-tag": "scierie_test:", "horodatage": "2017-01-31T20: 15: 00 + 00: 00"} $ ͳø {< 9d> ¾ÎX: < 8d> uV^K^H5

Essayer de lire à l'aide:

import com.databricks.spark.avro._ 
    val df = spark.read.avro("..path to avro file") 

nous obtenons l'erreur suivante

java.lang.RuntimeException: schéma Avro ne peut pas être converti en un StructType SQL Spark: [ "null", " chaîne "] à com.databricks.spark.avro.DefaultSource.inferSchema (DefaultSource.scala: 93) à org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply (DataSource.scala: 184) sur org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply (DataSource.scala: 184) à scala.Option.orElse (Option.scala: 289) à org.apache.spark.sql.execution.datasources.DataSource.org $ apache $ spark $ sql $ d'exécution $ datasources $ DataSource $$ getOrInferFileFormatSchema (DataSource.scala: 183) à org.apache.spark.sql.execution.datasources.DataSource.resolveRelation (DataSource.scala: 387) à org.apache.spark.sql.DataFrameReader. load (DataFrameReader.scala: 152) à org.apache.spark.sql.DataFrameReader.load (DataFrameReader.scala: 135) à com.databricks.spark.avro.package $ AvroDataFrameReader $$ anonfun $ avro $ 2.apply (package.scala: 34) à com.databricks.spark.avro.package $ AvroDataFrameReader $$ anonfun $ avro $ 2.apply (package.scala: 34)

S'il vous plaît aider

version Spark: 2,11

Version Spark-Avro: 2.11-3.2.0

kafka Version: 0.10.2.1

Répondre

0

votre fichier au format Avro n'est pas bon. Le schéma doit être de type: record. Suis incapable de joindre un fichier de format avro valide désolé pour cela. Mais vous pouvez consulter ce lien. Sample Avro format file

avro.schema¨{"type":"record" 

Et d'étincelle tout ce que vous avez fait est très bien.

import com.databricks.spark.avro._ 
sqlContext.read.avro(..paht of file)