如何让Spark spark cluster从本地路径而不是从主路径获取罐子



我发现,每次我在Spark独立群集中启动一个带有外部软件包的应用程序时,例如pyspark --master=spark://master:7077 --packages Azure:mmlspark:0.17,执行者总是试图从驱动程序中获取软件包JARS。这是日志:

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

类似的东西在执行者的日志中重复。包装的大小很大,因此过程需要很多时间。

我尝试使用pyspark的--jars参数将所需的罐子上传到每个执行人。执行者确实从本地路径中获取了他们,但是我无法在外壳中导入软件包。

那么如何解决问题?我该怎么做才能让执行者从本地路径获取软件包?或者也许来自HDFS?

我们可以将JAR复制到所有节点,然后在spark.executor.extraClassPath Config Param中添加路径,以便JARS可以在Executor的ClassPath中可用。

最新更新