当前位置: 首页 > news >正文

石家庄做家教网站网络营销网站建设

石家庄做家教网站,网络营销网站建设,wordpress备案号显示,织梦网站建设过程Apache Spark 4.0.0 冲突解决指南 1. 问题背景 在尝试运行一个基于 Apache Spark 4.0.0 的 Java 应用程序。根据 Spark 4.0.0 的发布说明#xff0c;该版本默认支持 Scala 2.13 和 JDK 17。在初始设置和运行过程中#xff0c;遇到了以下主要问题#xff1a; 依赖冲突 (PO…Apache Spark 4.0.0 冲突解决指南 1. 问题背景 在尝试运行一个基于 Apache Spark 4.0.0 的 Java 应用程序。根据 Spark 4.0.0 的发布说明该版本默认支持 Scala 2.13 和 JDK 17。在初始设置和运行过程中遇到了以下主要问题 依赖冲突 (POM 问题)Maven 项目的 pom.xml 配置不当导致依赖解析失败。Java 版本不兼容尽管 pom.xml 中指定了 JDK 17但系统默认的 Java 版本 (JDK 21/23) 导致运行时错误包括 java.lang.UnsupportedOperationException: getSubject is supported only if a security manager is allowed。Servlet API 兼容性问题运行应用程序时出现 java.lang.NoClassDefFoundError: jakarta/servlet/SingleThreadModel 错误。这是由于 Spark 4.0.0 内部使用了在较新 Servlet API 版本中已弃用或移除的类。 2. 解决方案 为解决上述问题我们采取了一系列配置和调整措施。 2.1 pom.xml 配置调整 针对依赖和 Java 版本兼容性问题对 pom.xml 进行了以下关键修改 指定 Java 版本: 确保 Maven 项目使用 JDK 17 进行编译和运行。 !-- ... existing code ... -- propertiesjava.version17/java.versionmaven.compiler.source${java.version}/maven.compiler.sourcemaven.compiler.target${java.version}/maven.compiler.targetspark.version4.0.0/spark.versionscala.compat.version2.13/scala.compat.version /properties !-- ... existing code ... --添加 Spark Core 和 Spark SQL 依赖: 确保 Spark 核心库和 SQL 模块正确引入并设置为 provided 范围避免与应用程序的其他依赖冲突。 !-- ... existing code ... -- dependencies!-- ... existing dependencies ... --dependencygroupIdorg.apache.spark/groupIdartifactIdspark-core_${scala.compat.version}/artifactIdversion${spark.version}/versionscopeprovided/scopeexclusionsexclusiongroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactId/exclusionexclusiongroupIdorg.eclipse.jetty/groupIdartifactId*/artifactId/exclusion/exclusions/dependencydependencygroupIdorg.apache.spark/groupIdartifactIdspark-sql_${scala.compat.version}/artifactIdversion${spark.version}/versionscopeprovided/scope/dependency!-- ... existing dependencies ... -- /dependencies !-- ... existing code ... --解决 Servlet API 兼容性问题: 为了解决 jakarta.servlet.SingleThreadModel 错误Spark 4.0.0 内部仍在使用我们显式排除了 spark-core 中的 jakarta.servlet-api 和 org.eclipse.jetty 依赖并手动引入了包含该类的较旧版本的 Servlet API (5.0.0)。 !-- ... existing code ... -- dependencygroupIdjakarta.servlet/groupIdartifactIdjakarta.servlet-api/artifactIdversion5.0.0/versionscopecompile/scope !-- Or runtime, depending on specific need -- /dependency !-- ... existing code ... --注意: 这个问题在 Apache Spark Jira (SPARK-51434) 中有记录并计划在 Spark 4.1.0 中修复。手动引入旧版本 Servlet API 是一个临时性的解决方案。 添加测试依赖: 解决 SparkDemoApplicationTests.java 中的编译错误引入 Spring Boot 测试依赖。 !-- ... existing code ... -- dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdversion3.5.0/version !-- Use an appropriate version --scopetest/scope /dependency !-- ... existing code ... --Maven Compiler Plugin 配置: 显式配置 Maven 编译器插件使用 JDK 17。 !-- ... existing code ... -- buildpluginsplugingroupIdorg.apache.maven.plugins/groupIdartifactIdmaven-compiler-plugin/artifactIdversion3.11.0/version !-- Use an appropriate version --configurationsource${java.version}/sourcetarget${java.version}/target/configuration/plugin!-- ... existing plugins ... --/plugins /build !-- ... existing code ... --Maven Exec Plugin 配置: 配置 exec-maven-plugin 以便直接运行主类并添加 --add-opens 参数以解决 Java 模块化系统相关的运行时访问限制。 !-- ... existing code ... -- plugingroupIdorg.codehaus.mojo/groupIdartifactIdexec-maven-plugin/artifactIdversion3.1.0/version !-- Use an appropriate version --configurationmainClassSpark_RDD.RDDCreateExample/mainClassexecutablejava/executableargumentsargument--add-opens/argumentargumentjava.base/java.nioALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/java.nio.channelsALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/java.langALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/java.utilALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/java.util.concurrentALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/java.util.concurrent.atomicALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/jdk.internal.miscALL-UNNAMED/argumentargument--add-opens/argumentargumentjava.base/sun.nio.chALL-UNNAMED/argument!-- Optional: For security manager if needed --!-- argument-Djava.security.managerallow/argument --/arguments/configuration /plugin !-- ... existing code ... --2.2 Java 环境配置 确保系统环境中的 Java 版本与项目要求一致是至关重要的。 设置 JAVA_HOME 环境变量: 通过在 shell 配置文件如 ~/.zshrc 或 ~/.bashrc中设置 JAVA_HOME 变量并将其指向 JDK 17 的安装路径可以确保 Maven 和其他工具使用正确的 Java 版本。 export JAVA_HOME/Library/Java/JavaVirtualMachines/openjdk-17.jdk/Contents/Home export PATH$JAVA_HOME/bin:$PATH修改后请务必执行 source ~/.zshrc (或 ~/.bashrc) 使更改生效。 验证 Java 和 Maven 版本: 在终端中运行以下命令验证 Java 版本和 Maven 使用的 Java 版本是否正确 java -version mvn --version确保 java -version 显示的是 17.x.x并且 mvn --version 输出中 “Java version” 字段也指向 JDK 17。 2.3 Spark UI 禁用 (可选但推荐) 为了规避潜在的 Jetty 或 Servlet API 相关的运行时问题可以通过 Spark 配置禁用 Spark UI尤其是在只需要执行批处理任务时。在 RDDCreateExample.java 中添加以下配置 // ... existing code ... SparkConf conf new SparkConf().setAppName(RDD Create).setMaster(local[*]).set(spark.ui.enabled, false); // Disable Spark UI JavaSparkContext sc new JavaSparkContext(conf); // ... existing code ...2.4 Maven Toolchains 尝试与经验 在解决 Java 版本问题时我们曾尝试使用 Maven Toolchains 来管理不同 JDK 版本。尽管配置了 ~/.m2/toolchains.xml但遇到了 Cannot find matching toolchain definitions 和 Toolchain JDK[...] is missing required property: vendor 等错误。 经验总结虽然 Maven Toolchains 是一个强大的工具但在某些复杂的 Java 环境特别是 macOS 上 OpenJDK 的安装路径和供应商识别中配置可能会比较棘手。在这种情况下直接通过设置 JAVA_HOME 环境变量来管理 Java 版本通常是更直接和有效的解决方案特别是对于单一项目或开发环境。清理 Maven 本地仓库 (rm -rf ~/.m2/repository/*) 有助于清除旧的或损坏的依赖但在 Toolchains 配置问题中它并未直接解决根本问题。 3. 最终结果 经过上述一系列的配置和调整应用程序最终成功运行。日志中显示 Spark 应用程序使用了 Java version 17.0.15并且应用程序逻辑正确执行输出了预期的结果。 成功运行的关键点: 在 pom.xml 中严格指定了 JDK 17。解决了 Spark 4.0.0 与 jakarta.servlet.SingleThreadModel 之间的兼容性问题通过手动排除和引入特定版本的 Servlet API。通过设置 JAVA_HOME 确保了整个构建和运行环境都使用了正确的 Java 版本。
http://www.zqtcl.cn/news/628026/

相关文章:

  • 网站建设与管理专业凡科做的网站好吗
  • wordpress添加变量福州seo网站管理
  • 哔哩哔哩免费网站观看网站制作合同书
  • 自流井移动网站建设建设网站的一般步骤
  • 手机导航网站模板上海低价网站建设
  • 如何开公司注册需要多少钱东莞网站推广优化网上推广公司
  • 新闻门户网站制作教育培训网站开发
  • 网站建设公司哪个好一点最近一周的热点新闻
  • 做最优秀的自己的视频网站佛山搜索引擎优化
  • 六盘水市网站建设免费封面设计在线制作生成
  • 北京快速建站制作公司wordpress wpoptions
  • iis如何建立网站门源县住房和城乡建设局网站
  • 装修素材图片都从什么网站找铁门关网站建设
  • 网站服务器环境不支持mysql数据库免费商标图案logo
  • 以什么主题做网站好wordpress怎么设置404
  • 为什么手机进网站乱码网络营销工具的特点
  • DW怎么做网站下拉菜单网站建设外包网站
  • 手机做兼职的网站设计公司注册记账代理公司
  • 如何在vs做网站建筑工程电影网
  • 甘肃网站开发网站建设自己在家接单
  • 龙岗网站制作资讯福田区龙岗区发布通告
  • 百度如何快速收录网站嘉兴手机建站模板
  • 服务注册中心有哪些给你一个网站你如何做优化
  • 我做网站如何分流客户openwrt 做视频网站
  • 徐州微信网站建设建设工程项目
  • 便宜网站建设公司envision wordpress
  • 网站怎么做百度快照logo网站域名做固定资产怎么处理
  • 2003 iis网站发布工会网站建设管理工作总结
  • 商城网站大概多少钱长沙网站设计公司推荐
  • 海南省交通建设局网站首页做网站开发一般用什么语言