apache-spark - 如何让 Spark 集群从本地路径而不是从主路径获取包 jar?
问题描述
我发现每次在我的 spark 独立集群中使用外部包启动应用程序时pyspark --master=spark://master:7077 --packages Azure:mmlspark:0.17
,执行程序总是试图从驱动程序中获取包 jar。这是日志:
2019-05-23 21:14:56 INFO Executor:54 - Fetching spark://Master:2653/files/com.microsoft.cntk_cntk-2.4.jar with timestamp 1558616430055
2019-05-23 21:14:56 INFO TransportClientFactory:267 - Successfully created connection to Master/192.168.100.2:2653 after 23 ms (0 ms spent in bootstraps)
2019-05-23 21:14:56 INFO Utils:54 - Fetching spark://Master:2653/files/com.microsoft.cntk_cntk-2.4.jar to /tmp/spark-0a60d982-0082-4d37-aea1-e1c0b21ee2be/executor-c9632fd2-29fc-429c-bdfb-31d870ed19e8/spark-15805ad8-ab00-41b3-b466-b0e8e95a3f56/fetchFileTemp5196357990337888981.tmp
这样的事情在执行者的日志中重复出现。包的大小相当大,所以这个过程需要很多时间。
我尝试使用--jars
pyspark 的参数将所需的 jar 上传到每个执行程序。执行程序确实从本地路径获取它们,但我无法在 shell 中导入包。
那么如何解决问题呢?我应该怎么做才能让执行者从本地路径获取包?或者也许来自 HDFS?
解决方案
我们可以将 jar 复制到所有节点,并在spark.executor.extraClassPath
config 参数中添加 jar 的路径,以便 jar 在 executor 的类路径中可用。
推荐阅读
- php - 增加数量后如何拆分购物车商品的 ID 号
- php - 我可以在 NodeJS 中生成密钥对,使用公钥在 PHP 中加密数据,然后在 NodeJS 中解密吗?
- php - 在视图文件 codeigniter 中显示数据时出现问题
- excel - VBA:在类模块中模拟 AddressOf 运算符的解决方法
- python - MacOS:在 High Sierra 上 brew install graph-tool
- redhat - 如何确定哪个版本的 yum 库与已安装的特定版本的依赖项兼容?
- prolog - Prolog - 检测有向图中连接节点的谓词
- c# - 使方法易于由第三方调用和配置的最佳方法
- asp.net-core - 在 VS 2019 预览版中没有可用于使用 .Net Core 3.0 的选项
- git - 收到 git push 错误:“您无法推送以下提交,因为它们是由作者姓名不知道 Stash 的用户创作的”