spark-shell --driver-java-options "-Dhttp.proxyHost=proxy.example -Dhttp.proxyPort=8080 -Dhttps.proxyHost=proxy.example -Dhttps.proxyPort=8080" --packages group:artifact:version

在客户端启动 spark-shell 时,这些驱动 JVM 选项会在依赖解析之前到达。请用所安装 Spark 版本支持的选项,把示例端点和 group:artifact:version 替换为预期值。Java 的主机名和端口是两个独立的属性。对于获准的公共依赖下载,HTTP 代理列表可为这些字段提供候选。

当 --packages 在 shell 可用之前就失败时,应使用这个位置。之后输入的应用程序代码无法修复先前那次下载。Spark 区分启动选项与程序内设置;在客户端模式下,应用程序代码运行时驱动 JVM 已经存在。

部署模式对 spark.driver.extraJavaOptions 同样重要:驱动可能运行在另一台机器上,而那台机器需要自己的代理路径。executor 之后的 API 请求是另一个进程、另一个网络位置;配置 executor 并不一定配置启动时的解析。

启动选项已存在但下载失败时

沿着仓库主机名、请求类型和第一条错误排查。元数据与构件可能来自多个主机。与 Maven 兼容的仓库 URL 并不能证明 Spark 会读取成功 Maven 命令所用的那个 settings.xml。

Java 下载器必须支持代理机制和所需的身份验证。主机/端口属性并不覆盖所有方案,而凭空编造的 http.proxyUsername 属性不会仅因 Java 接受该名称就生效。诊断这一阶段时,请把启动前配置和具体失败的下载放在一起看。

相关文章