【问题标题】:How to run Spark on Zeppelin to analyze xml files如何在 Zeppelin 上运行 Spark 以分析 xml 文件
【发布时间】:2016-08-22 05:29:09
【问题描述】:

我可以通过bin/spark-shell --packages com.databricks:spark-xml_2.11:0.3.0 运行 Spark shell 来分析 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 来做到这一点。 Zeppelin 在开始导入com.databricks.spark.xml 时是否需要一些参数? 现在我得到:

java.lang.RuntimeException:无法为数据源加载类: com.databricks.spark.xml 在 scala.sys.package$.error(package.scala:27​​) 在 org.apache.spark.sql.sources.ResolvedDataSource$.lookupDataSource(ddl.scala:220) 在 org.apache.spark.sql.sources.ResolvedDataSource$.apply(ddl.scala:233) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:114) 在 org.apache.spark.sql.DataFrameReader.load(DataFrameReader.scala:104) 在 $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:26) 在 $iwC$$iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:31) 在 $iwC$$iwC$$iwC$$iwC$$iwC$$iwC.(:33) 在 $iwC$$iwC$$iwC$$iwC$$iwC.(:35) 在 $iwC$$iwC$$iwC$$iwC.(:37) 在 $iwC$$iwC$$iwC.(:39) 在 $iwC$$iwC.(:41) 在 $iwC.(:43) 在 (:45) 在 .(:49) 在 .() 在 .(:7) at .() at $print() 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java: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) 在 org.apache.zeppelin.spark.SparkInterpreter.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) 在 org.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)

【问题讨论】:

    标签: scala apache-spark apache-zeppelin


    【解决方案1】:

    在 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 之前添加依赖项”,只需重新启动解释器或 Zeppelin。

    【讨论】:

    • 如果你没有 %dep 解释器怎么办?在 AWS EMR 标准 zeppelin 上,它似乎不包括在内。有没有其他方法可以添加这个包?
    猜你喜欢
    • 2017-03-11
    • 2018-10-29
    • 2020-11-29
    • 2020-07-27
    • 2016-05-01
    • 2017-04-16
    • 1970-01-01
    • 2016-01-23
    • 2018-07-14
    相关资源
    最近更新 更多