1

我的情况如下: 我想向 Spark 提交一个 32 位的驱动程序。驱动程序位于 C#(.NET Framework 控制台应用程序)中。我使用 Mobius ( https://github.com/Microsoft/Mobius/releases ) 启用 Spark fo C#。

该应用程序相当简单,并且具有非常简单的测试代码:

public static void Main(string[] args)
    {

            var conf = new SparkConf(); 
            var sparkContext = new SparkContext(conf);

            var rdd = sparkContext.Parallelize(new List<string>() { "a", "b", "c", "d" });

            var response = rdd.Map(s => s).Collect();

    }

在我将此应用程序正确提交给 sparkclr(即,mobius 然后将其传递给 Spark 本身)后,我得到以下异常:

System.Exception: JVM method execution failed: Static method collectAndServe failed for class org.apache.spark.api.python.PythonRDD when called with 1 parameters ([Index=1, Type=JvmObjectReference, Value=11], )
   at Microsoft.Spark.CSharp.Interop.Ipc.JvmBridge.CallJavaMethod(Boolean isStatic, Object classNameOrJvmObjectReference, String methodName, Object[] parameters)
   at Microsoft.Spark.CSharp.Interop.Ipc.JvmBridge.CallStaticJavaMethod(String className, String methodName, Object[] parameters)
   at Microsoft.Spark.CSharp.Proxy.Ipc.RDDIpcProxy.CollectAndServe()
   at Microsoft.Spark.CSharp.Core.RDD`1.Collect()

当我在 x64 中构建应用程序时,异常消失了。此外,当应用程序在 x86 中构建但什么都不做(即没有

var rdd = sparkContext.Parallelize(new List<string>() { "a", "b", "c", "d" });

var response = rdd.Map(s => s).Collect();

行)。

是否有任何解决方法可以将 32 位应用程序提交到 Spark?

这可能是因为我有 64 位版本的 Java 吗?(我下载并安装的是jdk-8u161-windows-x64.exe)。

4

0 回答 0