databricks avro schema无法转换为Spark SQL结构类型

时间:2017-07-13 07:30:40

标签: avro apache-kafka-connect databricks spark-avro

我们将kakfa hdfs连接器以默认的avro格式写入hdfs。样本o / p:

  

的OBJ ^ A ^ B ^ Vavro.schema “[” 空”, “字符串”] ^ @ $ͳø{<图9d>¾Ã^ X:其中8D> UV ^ K ^ H5 ^ F°^ F ^ B< 8a> ^ B {“severity”:“notice”,“message”:“测试消息”,“设施”:“kern”,“syslog-tag”:“sawmill_test:”,“timestamp”:“2017- 01-31T20:15:00 + 00:00“} ^ B< 8a> ^ B {”severity“:”notice“,”message“:”测试消息“,”设施“:”kern“,”syslog-tag “:”sawmill_test:“,”timestamp“:”2017-01-31T20:15:00 + 00:00“} ^ B< 8a> ^ B {”severity“:”notice“,”message“:”测试消息”, “设施”: “克恩”, “系统记录标签”: “sawmill_test:”, “时间戳”: “2017-01-31T20:15:00 + 00:00”} $ͳø{<图9d>¾Ã^ X:其中8D> UV ^ K ^ H5

尝试阅读:

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

我们收到以下错误

  

java.lang.RuntimeException:无法将Avro架构转换为Spark SQL StructType:   [“null”,“string”]     at com.databricks.spark.avro.DefaultSource.inferSchema(DefaultSource.scala:93)     在org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply(DataSource.scala:184)     在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 $ execution $ 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)     at com.databricks.spark.avro.package $ AvroDataFrameReader $$ anonfun $ avro $ 2.apply(package.scala:34)     at com.databricks.spark.avro.package $ AvroDataFrameReader $$ anonfun $ avro $ 2.apply(package.scala:34)

请帮忙

Spark版本:2.11

Spark-avro版本:2.11-3.2.0

kafka版本:0.10.2.1

1 个答案:

答案 0 :(得分:0)

您的avro格式文件不正确。架构必须是type:record。无法附加有效的avro格式文件,对不起。 但是你可以参考这个链接。 Sample Avro format file

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

从火花中你所做的一切都很好。

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