当前位置: 首页 > 知识库问答 >
问题:

Spark可以预初始化重型第三方库吗?

公羊凌
2023-03-14

我有一个相当复杂的库,可以通过Java/JNI连接器访问,我想在集群中通过Spark使用它。然而,在第一次使用之前需要初始化库,这需要大约30秒。所以我的问题是Spark是否有某种机制在作业开始时预先初始化这样的库,以便实际使用时不需要这种初始化开销?

共有1个答案

徐昆
2023-03-14

问题是Spark是否有某种机制在作业开始时预先初始化此类库,以便实际使用时不需要这种初始化开销?

就我所知

但是,如果您想使用RDD传输进行预初始化,那么在运行作业之前,请先获取一个空的RDD,然后您可以重置和/或初始化群集。。。

map reduce有设置清理方法来初始化和清理。。。可以使用将map reduce样式代码转换为spark的相同方法,例如:

注意:空RDD可以重新分区。所以我在想下面的方法,如果它的转换,如果你使用action,那么你可以使用foreachPartition

mapPartitions示例:

val rdd = sc.emptyRDD.repartition(sc.defaultParallelism)    
rdd.mapPartitions(partition -> 
        setup() //library initialization like map-reduce setup method
        partition.map( item => 
            val output = process(item) // your logic here.
            if (!partition.hasNext) {
               // cleanup here
            }
        )
    )

foreachPartition示例:

 if (rdd.isEmpty) {
      rdd.repartition(sc.defaultParallelism).foreachPartition(_ => yourUtils.initOnce())
    }

>

  • 请检查一下。。。http://blog.cloudera.com/blog/2014/09/how-to-translate-from-mapreduce-to-apache-spark/

    也请参阅我的答案,详细解释map分区Apache Spark: map vs map分区

  •  类似资料:
    • Spark 编程的第一步是需要创建一个 SparkContext 对象,用来告诉 Spark 如何访问集群。在创建 SparkContext 之前,你需要构建一个 SparkConf 对象, SparkConf 对象包含了一些你应用程序的信息。 val conf = new SparkConf().setAppName(appName).setMaster(master) new SparkCon

    • 进入内核入口点之前最后的准备工作 这是 Linux 内核初始化过程的第三部分。在上一个部分 中我们接触到了初期中断和异常处理,而在这个部分中我们要继续看一看 Linux 内核的初始化过程。在之后的章节我们将会关注“内核入口点”—— init/main.c 文件中的start_kernel 函数。没错,从技术上说这并不是内核的入口点,只是不依赖于特定架构的通用内核代码的开始。不过,在我们调用 sta

    • 问题内容: TensorFlow中初始化变量的标准方法是 经过一段时间的学习后,我创建了一组新变量,但是一旦初始化它们,它将重置所有现有变量。目前,解决此问题的方法是保存所需的所有变量,然后在tf.initalize_all_variables调用之后重新应用它们。这有效,但是有点笨拙。我在文档中找不到像这样的东西… 有谁知道初始化未初始化变量的好方法吗? 问题答案: 没有优雅的方法可以枚举图中的

    • 8.1 令人惊叹的第三方库 如果用手机来比喻编程语言,那么 Python 是一款智能机。正如海量的手机应用出现在 iOS、Android 平台上,同样有各种各样的第三方库为 Python 开发者提供了极大的便利。 当你想搭建网站时,可以选择功能全面的 Django、轻量的 Flask 等 web 框架;当你想写一个小游戏的时候,可以使用 PyGame 框架;当你想做一个爬虫时,可以使用 Scrap

    • 本文向大家介绍keras之权重初始化方式,包括了keras之权重初始化方式的使用技巧和注意事项,需要的朋友参考一下 在神经网络训练中,好的权重 初始化会加速训练过程。 下面说一下kernel_initializer 权重初始化的方法。 不同的层可能使用不同的关键字来传递初始化方法,一般来说指定初始化方法的关键字是kernel_initializer 和 bias_initializer 几种初始化

    • 初始化方法定义了对Keras层设置初始化权重的方法 不同的层可能使用不同的关键字来传递初始化方法,一般来说指定初始化方法的关键字是kernel_initializer 和 bias_initializer,例如: model.add(Dense(64, kernel_initializer='random_uniform', bias