如何为Spark运行时ivy依赖下载单独配置HTTP代理
Spark ivy依赖下载独立代理配置方案
需求背景
Spark可在运行时通过packages选项下载额外依赖,该过程底层通过ivy实现。
需求:配置HTTP代理仅用于上述依赖下载场景,无需为所有Java进程配置全局代理。
实现方案
方案1:无需修改源码的运行时配置(推荐)
直接在Spark作业提交时为当前作业的JVM进程单独传递代理参数,不会影响全局Java环境,命令示例如下:
spark-submit \ --conf spark.driver.extraJavaOptions="-Dhttp.proxyHost=<代理主机地址> -Dhttp.proxyPort=<代理端口> -Dhttps.proxyHost=<代理主机地址> -Dhttps.proxyPort=<代理端口>" \ --conf spark.executor.extraJavaOptions="-Dhttp.proxyHost=<代理主机地址> -Dhttp.proxyPort=<代理端口> -Dhttps.proxyHost=<代理主机地址> -Dhttps.proxyPort=<代理端口>" \ --packages <你的依赖包坐标> \ <你的作业主类路径>
如果是本地IDEA调试Spark作业,直接在启动配置的VM options栏添加上述代理参数即可。
方案2:修改源码实现
通过Debug Spark源码可定位到ivy依赖下载的相关逻辑在org.apache.ivy.util.url.BasicURLHandler类中,可在该类对应网络请求的位置添加代理配置,参考代码如下:
url.openConnection(PROXY);
内容的提问来源于stack exchange,提问作者Thomas Decaux
相关产品推荐
相关产品推荐

