2016-04-27 56 views
1

我能夠通過bin/spark-shell --packages com.databricks:spark-xml_2.11:0.3.0運行星火殼analize XML文件,例如:如何在齊柏林運行星火分析XML文件

import org.apache.spark.sql.SQLContext 

val sqlContext = new SQLContext(sc) 
val df = sqlContext.read 
    .format("com.databricks.spark.xml") 
    .option("rowTag", "book") 
    .load("books.xml") 

,但我怎麼可以運行飛艇做如此。 Zeppelin在開始導入com.databricks.spark.xml時是否需要一些參數? 現在我越來越:

了java.lang.RuntimeException:無法加載類數據來源: com.databricks.spark.xml在 scala.sys.package $ .error(package.scala:27 )at org.apache.spark.sql.sources.ResolvedDataSource $ .lookupDataSource(ddl.scala:220) at org.apache.spark.sql.sources.ResolvedDataSource $ .apply(ddl.scala:233) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:114) at org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:104) at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:26)at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:31 )at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:33)at $ iwC $$ iwC $$ iwC $$ iwC $$ iwC。(:35)at $ iwC $$:iwC $$ iwC $$ iwC。(:37)at $ iwC $$ iwC $$ iwC。(:39)at $ iwC $$ iwC。(:41) at $ iwC。(:43)at (:45)at 。(:49)at。()at 。(:7)at。()at $ print() at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect。 NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java VA:497)在 org.apache.spark.repl.SparkIMain $ ReadEvalPrint.call(SparkIMain.scala:1065) 在 org.apache.spark.repl.SparkIMain $ Request.loadAndRun(SparkIMain.scala:1338) 在 org.apache.spark.repl.SparkIMain.loadAndRunReq $ 1(SparkIMain.scala:840) 在org.apache.spark.repl.SparkIMain.interpret(SparkIMain.scala:871) 在org.apache.spark.repl .SparkIMain.interpret(SparkIMain.scala:819) 在 org.apache.zeppelin.spark.SparkInterpreter.interpretInput(SparkInterpreter.java:709) 在 org.apache.zeppelin.spark.SparkInterpreter.interpret(SparkInterpreter.java :674) at org.apache.zeppelin.spark.Sp arkInterpreter.interpret(SparkInterpreter.java:667) 在 org.apache.zeppelin.interpreter.ClassloaderInterpreter.interpret(ClassloaderInterpreter.java:57) 在 org.apache.zeppelin.interpreter.LazyOpenInterpreter.interpret(LazyOpenInterpreter.java: 93) 在 org.apache.zeppelin.interpreter.remote.RemoteInterpreterServer $ InterpretJob.jobRun(RemoteInterpreterServer.java:300) 在org.apache.zeppelin.scheduler.Job.run(Job.java:169)在 組織.apache.zeppelin.scheduler.FIFOScheduler $ 1.run(FIFOScheduler.java:134) 在 java.util.concurrent.Executors $ RunnableAdapter.call(Executors.java:511) 在java.util.concurrent.FutureTask.run (FutureTask.java:266)在 java.util.concurrent.ScheduledThreadPoolExecutor中$ $ ScheduledFutureTask.access 201(ScheduledThreadPoolExecutor.java:180) 在 java.util.concurrent.ScheduledThreadPoolExecutor中$ ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) 在 java.util.concurrent中。ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 在 java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:617) 在java.lang.Thread.run(Thread.java:745)

回答

4

在Zeppelin中,您需要在創建SparkContext之前調用這些依賴關係。

在一個單獨的單元格添加和運行以下

%dep 
z.reset() 
z.addRepo("Spark Packages Repo").url("http://dl.bintray.com/spark-packages/maven") 
z.load("com.databricks:spark-xml_2.11:0.3.0") 

如果這讓你從類型的錯誤:「你必須開始你SparkContext之前添加依賴」只需重新啓動解釋或飛艇。

+0

如果您沒有%dep解釋器會怎麼樣?在AWS EMR標準zeppelin上,它似乎沒有包含在內。有沒有其他的方式來添加這個包? – Davos