gpt4 book ai didi

java - 使用 native 依赖项的 Apache spark - 独立模式下的驱动程序/执行程序代码流

转载 作者:太空宇宙 更新时间:2023-11-03 22:04:24 25 4
gpt4 key购买 nike

我在独立模式下设置了 spark(笔记本电脑中的单个节点),尝试集成 opencv 以从目录中读取一组图像并检测每个图像中的人脸。我试图了解 native 依赖项如何传送到执行程序 jvm,我认为在下面给出的程序中,System.loadLibrary 函数将作为驱动程序 jvm 的一部分执行,并且执行程序 jvm 将在匿名函数尝试时失败找到 native 库。但与我的理解相反,该程序运行良好。有人可以解释这是如何工作的,以及代码的哪一部分从驱动程序发送到执行程序。

 public static void main( String[] args )
{
SparkConf conf = new SparkConf().setMaster("spark://localhost:7077").setAppName("Image detect App");
JavaSparkContext sc = new JavaSparkContext(conf);
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);

CascadeClassifier faceDetector = new CascadeClassifier("/home/xx/Project/opencv-3.1.0/data/haarcascades_cuda/haarcascade_frontalface_alt.xml");

File tempDir = new File("/home/xx/images/new");
String tempDirName = tempDir.getAbsolutePath();

JavaPairRDD<String, PortableDataStream> readRDD = sc.binaryFiles(tempDirName,3);
List<Tuple2<String, PortableDataStream>> result = readRDD.collect();
for (Tuple2<String, PortableDataStream> res : result)
{
Mat image = Imgcodecs
.imread(res._1().replace("file:",""));

MatOfRect faceDetections = new MatOfRect();
faceDetector.detectMultiScale(image, faceDetections);

for (Rect rect : faceDetections.toArray()) {
Imgproc.rectangle(image, new Point(rect.x, rect.y), new Point(rect.x + rect.width, rect.y + rect.height),
new Scalar(0, 255, 0));
}
String filename = res._1().replace("file:","") + "_out";
Imgcodecs.imwrite(filename, image);
}

} 使用上述程序创建了一个 jar 并运行了以下 spark submit 命令,它按预期工作正常。

./bin/spark-submit --verbose --master spark://localhost:7077 --num-executors 2 --class com.xxx.MainSparkImage --jars/home/xx/Project/opencv-3.1 .0/release/bin/opencv-310.jar --driver-library-path/home/xx/Project/opencv-3.1.0/release/lib/home/xx/ImageProcess.jar

谢谢斯里瓦赞

最佳答案

List<Tuple2<String, PortableDataStream>> result = readRDD.collect(); 

此行将导致 RDD 作为本地集合收集回驱动程序。其余代码(for 循环)在驱动程序中本地执行。因此,您不会在执行程序上看到任何与缺少 native 库相关的错误。

关于java - 使用 native 依赖项的 Apache spark - 独立模式下的驱动程序/执行程序代码流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36974723/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com