gpt4 book ai didi

Dataproc 集群中的 Scala Spark 作业返回 java.util.NoSuchElementException : None. get

转载 作者:行者123 更新时间:2023-12-04 07:56:13 26 4
gpt4 key购买 nike

我收到错误

ERROR org.apache.spark.executor.Executor: Exception in task 0.0 in stage 0.0 (TID 0)
java.util.NoSuchElementException: None.get
当我使用 Dataproc 集群运行我的作业时,当我在本地运行它时,它运行得很好。我使用以下玩具示例重新创建了该问题。
package com.deequ_unit_tests

import org.apache.log4j.{Level, Logger}
import org.apache.spark.sql.SparkSession

object reduce_by_key_example {def main(args: Array[String]): Unit = {

// Set the log level to only print errors
Logger.getLogger("org").setLevel(Level.ERROR)

val spark: SparkSession = SparkSession.builder()
.master("local[1]")
.appName("SparkByExamples.com")
.getOrCreate()

println("Step 1")
val data = Seq(("Project", 1),
("Gutenberg’s", 1),
("Alice’s", 1),
("Adventures", 1),
("in", 1),
("Wonderland", 1),
("Project", 1),
("Gutenberg’s", 1),
("Adventures", 1),
("in", 1),
("Wonderland", 1),
("Project", 1),
("Gutenberg’s", 1))

println("Step 2")
val rdd = spark.sparkContext.parallelize(data)

println("Step 3")
val rdd2 = rdd.reduceByKey(_ + _)

println("Step 4")
rdd2.foreach(println)
}
}
当我在 Dataproc 中运行此作业时,执行该行时出现此错误
rdd2.foreach(println)
作为附加信息,我不得不说,在我公司的 Dataproc 集群中应用了一些更改之前,我没有收到此错误。对于使用 PySpark 的同事,在上面示例的 Pyspark 中具有等效版本,更改
  sc = SparkContext('local')
  sc = SparkContext()
成功了,但我在 Spark Scala 中找不到等效的解决方案。你知道是什么导致了这个问题吗?欢迎任何帮助。

最佳答案

  • 如下配置您的 pom.xml 或 build.sbt:

  • 在脚本中添加提供的范围:
    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>org.example</groupId>
    <artifactId>stackOverFlowGcp</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-core_2.11</artifactId>
    <version>2.2.3</version>
    <scope>provided</scope>


    </dependency>
    <dependency>
    <groupId>org.apache.spark</groupId>
    <artifactId>spark-sql_2.11</artifactId>
    <version>2.2.3</version>
    <scope>provided</scope>
    </dependency>


    <dependency>
    <groupId>com.typesafe</groupId>
    <artifactId>config</artifactId>
    <version>1.4.0</version>
    <scope>provided</scope>

    </dependency>


    </dependencies>


    <build>
    <plugins>
    <!-- Maven Plugin -->
    <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.3.2</version>
    <configuration>
    <source>8</source>
    <target>8</target>
    </configuration>
    </plugin>
    <!-- assembly Maven Plugin -->
    <plugin>
    <artifactId>maven-assembly-plugin</artifactId>
    <configuration>
    <archive>
    <manifest>
    <mainClass>mainPackage.mainObject</mainClass>
    </manifest>
    </archive>
    <descriptorRefs>
    <descriptorRef>jar-with-dependencies</descriptorRef>
    </descriptorRefs>
    </configuration>
    <executions>
    <execution>
    <id>make-assembly</id>
    <phase>package</phase>
    <goals>
    <goal>single</goal>
    </goals>
    </execution>
    </executions>
    </plugin>

    </plugins>

    </build>


    </project>

  • 创建你的包:清理 => 重建 => 编译 => 包
  • package mainPackage
    import org.apache.spark.sql.SparkSession

    object mainObject {


    def main(args: Array[String]): Unit = {


    val spark: SparkSession = SparkSession.builder()
    //.master("local[*]")
    .appName("SparkByExamples")
    .getOrCreate()

    spark.sparkContext.setLogLevel("ERROR")

    println("Step 1")
    val data = Seq(("Project", 1),
    ("Gutenberg’s", 1),
    ("Alice’s", 1),
    ("Adventures", 1),
    ("in", 1),
    ("Wonderland", 1),
    ("Project", 1),
    ("Gutenberg’s", 1),
    ("Adventures", 1),
    ("in", 1),
    ("Wonderland", 1),
    ("Project", 1),
    ("Gutenberg’s", 1))

    println("Step 2")
    val rdd = spark.sparkContext.parallelize(data)
    println("Step 3")
    val rdd2 = rdd.reduceByKey(_ + _)

    println("Step 4")
    rdd2.foreach(println)


    }
    }
  • 创建您的 dataproc 集群
  • 在 dataproc 中运行 spark 作业

  • 在 dataproc 中,您不会看到前面提到的结果,如果您想了解更多关于 Dataproc approch 的信息。但是,如果您愿意,您可以在 dataproc 中显示数据框。
    enter image description here
    enter image description here
    enter image description here
    enter image description here
    正如您在 dataproc 中看到的那样,一切正常。
    完成后不要忘记关闭集群或将其删除;)

    关于Dataproc 集群中的 Scala Spark 作业返回 java.util.NoSuchElementException : None. get,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66689224/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com