2017-07-13 100 views
0

我們有kakfa hdfs連接器以默認avro格式寫入hdfs。樣品O/P:databricks avro模式無法轉換爲Spark SQL結構類型

的OBJ^A^B^Vavro.schema 「[」 空」, 「字符串」]^@ $ͳø{< 9D>¾Ã^ X:< 8D>紫外^ K^H5^F^F^B < 8a>^B {「severity」:「notice」,「message」:「Test message」,「facility」:「kern」,「syslog-tag」:「sawmill_test:」, 「時間戳」:「2017-01-31T20:15:00 + 00:00」}^B < 8a>^B {「嚴重性」:「通知」,「消息」:「測試消息」,「設施」:「 kern「,」syslog-tag「:」sawmill_test:「,」timestamp「:」2017-01-31T20:15:00 + 00:00「}^B < 8a>^B {」severity「:」notice「, 「message」:「Test message」,「facility」:「kern」,「syslog-tag」:「sawmill_test:」,「timestamp」:「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的模式不能轉換到火花SQL StructType: [ 「空」,「字符串「] at com.databricks.spark.avro.DefaultSource.inferSchema(DefaultSource.scala:93) at org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply(DataSource.scala:184 ) at org.apache.spark.sql.execution.datasources.DataSource $$ anonfun $ 7.apply(DataSource.scala:184) at scala.Option.orElse(Option.scala:289) at org.apache.spark.sql.execution.datasources.DataSource.org $ apache $ spark $ sql $ execution $ datasources $ DataSource $$ getOrInferFileFormatSchema(DataSource.scala:183) at org.apache.spark.sql.execution.datasources.DataSource.resolveRelation(DataSource.scala:387) at org.apache.spark.sql.DataFrameReader。 (DataFrameReader.scala:152) at 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)

請幫

星火版本:2.11

火花的Avro版本:2.11-3.2.0

卡夫卡版本:0.10.2.1

回答

0

您的Avro的格式文件是不妥當的。該模式必須是type:record。我無法附加一個有效的avro格式文件對不起。 但你可以參考這個鏈接。 Sample Avro format file

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

並從火花什麼你做了很好。

import com.databricks.spark.avro._ 
sqlContext.read.avro(..paht of file) 
相關問題