dataproc集群中的scala spark作业返回java.util.nosuchelementexception:none.get

rvpgvaaj  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(518)

我得到了错误

  1. ERROR org.apache.spark.executor.Executor: Exception in task 0.0 in stage 0.0 (TID 0)
  2. java.util.NoSuchElementException: None.get

当我使用dataproc集群运行我的作业时,当我在本地运行它时,它运行得非常好。我用下面的玩具示例重新创建了这个问题。

  1. package com.deequ_unit_tests
  2. import org.apache.log4j.{Level, Logger}
  3. import org.apache.spark.sql.SparkSession
  4. object reduce_by_key_example {def main(args: Array[String]): Unit = {
  5. // Set the log level to only print errors
  6. Logger.getLogger("org").setLevel(Level.ERROR)
  7. val spark: SparkSession = SparkSession.builder()
  8. .master("local[1]")
  9. .appName("SparkByExamples.com")
  10. .getOrCreate()
  11. println("Step 1")
  12. val data = Seq(("Project", 1),
  13. ("Gutenberg’s", 1),
  14. ("Alice’s", 1),
  15. ("Adventures", 1),
  16. ("in", 1),
  17. ("Wonderland", 1),
  18. ("Project", 1),
  19. ("Gutenberg’s", 1),
  20. ("Adventures", 1),
  21. ("in", 1),
  22. ("Wonderland", 1),
  23. ("Project", 1),
  24. ("Gutenberg’s", 1))
  25. println("Step 2")
  26. val rdd = spark.sparkContext.parallelize(data)
  27. println("Step 3")
  28. val rdd2 = rdd.reduceByKey(_ + _)
  29. println("Step 4")
  30. rdd2.foreach(println)
  31. }
  32. }

当我在dataproc中运行这个作业时,我在执行行时得到这个错误

  1. rdd2.foreach(println)

作为补充信息,我不得不说,在我公司的dataproc集群中应用了一些更改之前,我没有收到这个错误。对于使用pyspark的同事,使用上面示例的pyspark中的等效版本

  1. sc = SparkContext('local')

  1. sc = SparkContext()

我成功了,但在spark scala中找不到等价的解决方案。你知道是什么导致了这个问题吗?欢迎任何帮助。

mepcadol

mepcadol1#

按如下方式配置pom.xml或build.sbt:
在脚本中添加提供的作用域:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  5. <modelVersion>4.0.0</modelVersion>
  6. <groupId>org.example</groupId>
  7. <artifactId>stackOverFlowGcp</artifactId>
  8. <version>1.0-SNAPSHOT</version>
  9. <dependencies>
  10. <dependency>
  11. <groupId>org.apache.spark</groupId>
  12. <artifactId>spark-core_2.11</artifactId>
  13. <version>2.2.3</version>
  14. <scope>provided</scope>
  15. </dependency>
  16. <dependency>
  17. <groupId>org.apache.spark</groupId>
  18. <artifactId>spark-sql_2.11</artifactId>
  19. <version>2.2.3</version>
  20. <scope>provided</scope>
  21. </dependency>
  22. <dependency>
  23. <groupId>com.typesafe</groupId>
  24. <artifactId>config</artifactId>
  25. <version>1.4.0</version>
  26. <scope>provided</scope>
  27. </dependency>
  28. </dependencies>
  29. <build>
  30. <plugins>
  31. <!-- Maven Plugin -->
  32. <plugin>
  33. <groupId>org.apache.maven.plugins</groupId>
  34. <artifactId>maven-compiler-plugin</artifactId>
  35. <version>2.3.2</version>
  36. <configuration>
  37. <source>8</source>
  38. <target>8</target>
  39. </configuration>
  40. </plugin>
  41. <!-- assembly Maven Plugin -->
  42. <plugin>
  43. <artifactId>maven-assembly-plugin</artifactId>
  44. <configuration>
  45. <archive>
  46. <manifest>
  47. <mainClass>mainPackage.mainObject</mainClass>
  48. </manifest>
  49. </archive>
  50. <descriptorRefs>
  51. <descriptorRef>jar-with-dependencies</descriptorRef>
  52. </descriptorRefs>
  53. </configuration>
  54. <executions>
  55. <execution>
  56. <id>make-assembly</id>
  57. <phase>package</phase>
  58. <goals>
  59. <goal>single</goal>
  60. </goals>
  61. </execution>
  62. </executions>
  63. </plugin>
  64. </plugins>
  65. </build>
  66. </project>

创建包:clean=>rebuild=>compile=>package

  1. package mainPackage
  2. import org.apache.spark.sql.SparkSession
  3. object mainObject {
  4. def main(args: Array[String]): Unit = {
  5. val spark: SparkSession = SparkSession.builder()
  6. //.master("local[*]")
  7. .appName("SparkByExamples")
  8. .getOrCreate()
  9. spark.sparkContext.setLogLevel("ERROR")
  10. println("Step 1")
  11. val data = Seq(("Project", 1),
  12. ("Gutenberg’s", 1),
  13. ("Alice’s", 1),
  14. ("Adventures", 1),
  15. ("in", 1),
  16. ("Wonderland", 1),
  17. ("Project", 1),
  18. ("Gutenberg’s", 1),
  19. ("Adventures", 1),
  20. ("in", 1),
  21. ("Wonderland", 1),
  22. ("Project", 1),
  23. ("Gutenberg’s", 1))
  24. println("Step 2")
  25. val rdd = spark.sparkContext.parallelize(data)
  26. println("Step 3")
  27. val rdd2 = rdd.reduceByKey(_ + _)
  28. println("Step 4")
  29. rdd2.foreach(println)
  30. }
  31. }

创建dataproc集群
在dataproc中运行spark作业
在dataproc中,您不会看到前面提到的结果,如果您想知道,请阅读更多关于dataproc方法的内容。但是,如果愿意,可以在dataproc中显示Dataframe。




正如您在dataproc中看到的,每件事情都很好地工作。不要忘记关闭集群或在完成后删除它;)

展开查看全部

相关问题