【问题标题】:Execute code scala from spark in Zeppelin在 Zeppelin 中从 spark 执行代码 scala
【发布时间】:2020-05-22 18:14:42
【问题描述】:

我想通过 Spark 集群在 Zeppelin 上运行 scala 代码。

例如: 这是 hdfs Spark "HelloWorldScala.scala" 中的代码:

object HelloWorldScala{
 def main (arg: Array[String]): Unit = {
 val conf = new SparkConf().setAppName("myApp_Enrico")

 val spark = SparkSession.builder.config(conf).getOrCreate()
 val aList = List(1,2,3,4,5,6,7,8,9,10)
 val aRdd = spark.sparkContext.parallelize(aList)
 println("********* HELLO WORLD AND HELLO SPARK!! ******")
 println("Print even numbers")
 aRdd.filter(x=>x%2==0).map(x=>x*2).collect().foreach(println)
  }

}

我想在 Zeppelin 中导入 HelloWorldScala 文件并运行 main,但我看到错误:

错误代码 Zeppelin

【问题讨论】:

    标签: scala apache-spark apache-zeppelin


    【解决方案1】:

    很遗憾,您无法在 Zeppelin 中导入单个文件。您可以将 scala 文件打包到 .jar 库中并将其放入 spark.jars(在 spark 中设置为属性)目录,之后您可以使用以下行导入您的库:import your.libray.packages.YourClass 并使用其中的非私有函数。如果您不了解 jar 包和 spark.jar 目录,请阅读更多相关信息。

    更新:

    %dep
    z.load("your_package_group:artifact:version")
    %spark
    
    import com.yourpackage.HelloWorldScala
    

    【讨论】:

    • 我创建了一个 jar 文件“AppSparkTest.jar”。 jar文件的结构是:-src -main -scala -com -test -HelloWorldScala.scala。接下来,我通过在 spark.jars 中插入路径 jar 来在 Zeppelin 中设置属性 %spark。最后我以这种方式导入import com.test.HelloWorldScala,但我看到错误<console>: 23: error: object test is not a member of package com。为什么?
    • HelloWorldScala.scala 顶部有 package com.test 行吗?你是如何创建 jar 的?你为此使用了 sbt 包吗?
    • 我用 intelliJ IDEA 创建了 jar,然后“构建工件”。我在 HelloWorldScala.scala 顶部也有 package com.test
    猜你喜欢
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 2014-12-22
    • 2018-08-23
    • 2016-09-12
    • 2020-04-02
    • 2017-04-26
    • 2019-12-02
    相关资源
    最近更新 更多