2016-08-13 40 views
0

我試圖用一個繼承Scala的函數(StuctType.diff()),並即時得到一個的NoSuchMethodError星火使用繼承Scala的功能(Java/SparkSQL)


線程「main」中的異常java.lang.NoSuchMethodError: org.apache.spark.sql.types.StructType.diff(Lscala/collection/GenSeq;)Lscala/collection/Seq; 在TableNode.neighborNode(SparkSQLTest.java:112) 在SparkSQLTest.main(SparkSQLTest.java:58) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本機方法) 在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java :62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at org.apache.spark.deploy.SparkSubmit $。 org $ apache $ spark $ deploy $ SparkSubmit $$ runMain(SparkSubmit.scala:731) at org.apache.spark.deploy.SparkSubmit $ .doRunMain $ 1(SparkSubmit.scala:181) at org.apache.spark.deploy .SparkSubmit $ .submit(SparkSubmit.scala:206) at org.apache.spark.deploy.SparkSubmit $。主(SparkSubmit.scala:121) 在org.apache.spark.deploy.SparkSubmit.main(SparkSubmit.scala)*
代碼如下:

public StructType foo(DataFrame df){ 
    StructField sf = this.schema.diff(df.schema()).last(); 
    StructType schema_tmp = new StructType().add(sf); 
    return schema_tmp; 
} 

有人有任何想法?我使用的Spark 1.6.2和Scala 2.10

+0

你能執行'sc.version'來查看你使用的是什麼Spark版本?你可以使用'spark-shell'來檢查它。 –

+0

嗨,我執行了。我正在使用Spark 1.6.2 –

+0

你能顯示整個代碼嗎?你能展示你如何定義依賴關係嗎?你在用sbt嗎? –

回答

0

嗯,我使用的Spark 2.0和StructType方法是supported.Please看看下面的代碼片段,我希望它的幫助:

val schema = new StructType(Array(
StructField("STORE_ID", StringType,true),
StructField("SALE_DATE", DateType,true)))