我使用gcloud或Google Cloud DataProc API向Dataproc提交Spark作业。其中一个论点是' - jars' (或其Java API等价物),我提供以逗号分隔的jar文件列表,提供给执行程序和驱动程序类路径:
gs://google-storage-bucket/lib/x1.jar,gs://google-storage-bucket/lib/x2.jar等...
每次提交作业时,相同的JAR文件都会从执行器节点上的每个SparkContext从Google存储桶复制到工作目录,并且在作业真正开始执行之前需要大约2分钟(我可以在Google上看到)云控制台 - https://console.cloud.google.com/dataproc/jobs/..。)。
是否有可能以某种方式在Spark节点上缓存这些jar文件,并在每个作业提交的类路径中使用它们?这样可以节省大约50%的运行时间。
谢谢,
维克多
答案 0 :(得分:1)
实际上,如果传入file:///your/path/on/the/cluster/nodes/filesystem
形式的参数,那么它将被解释为引用群集节点本身上的文件。
您可以使用初始化操作在群集创建时将文件从GCS复制到节点中,或尝试运行某种Spark作业以在现有群集上执行此操作和/或手动SSH以进行分段广口瓶中。