2014-09-13 63 views
3

我在CentOS 6.2上安裝了Spark的CDH5 1.0.0版,並且運行時沒有錯誤。爲什麼在sql schema create時出現「error:not found:value StructType」?

當試圖運行一些Spark SQL時,我遇到一個錯誤。我開始我的星火殼細...

spark-shell --master spark://mysparkserver:7077 

然後我跑在Spark SQL Programming Guide從節目指南的例子斯卡拉腳本之一。

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc) 

scala> val vehicle = sc.textFile("/tmp/scala.csv") 

scala> val schemaString = "year manufacturer model class engine cylinders fuel consumption clkm hlkm cmpg hmpg co2lyr co2gkm" 

scala> import org.apache.spark.sql._ 

scala > val schema = 
StructType 
( 
schemaString.split(" ").map(fieldName => 
    StructField(fieldName, StringType, true)) 
) 

但是,導入語句似乎並沒有奏效?由於最後一行給出

scala> StructType 
<console>:14: error: not found: value StructType 
       StructType 
      ^

我知道StructTypeorg.apache.spark.sql.api.java.StructType錯誤。如果我在模式行中將StructType替換爲全名,則錯誤會更改。

是否有其他人遇到此錯誤?是否有一個額外的步驟需要我失蹤?

回答

3

你的問題是你正在閱讀最新版本的Spark的編程指南,並在Spark 1.0.0上試用它。唉,在Spark 1.1.0中引入了org.apache.spark.sql.api.java.StructType,就像「以編程方式指定模式」一節一樣。

因此,如果沒有升級,您將無法做到這一點 - 除非您能夠使用1.0.0指南中的「在RDD上運行SQL」一節中的技術,1.1 .0被稱爲「使用反射推斷模式」。 (基本上,如果您可以容忍固定架構。)

如果您查看各種文檔URL,您想用1.0.0替換latest。如有疑問,我想提出多個版本的API文檔和搜索。我注意到,像javadoc一樣,scaladoc有一個@since註釋,用於在API文檔中使這些信息更加清晰,但它並未在Spark API文檔中使用。

+0

謝謝!這解決了我的問題。 – 2014-09-14 02:25:07

相關問題