windows下使用java实现spark 外部调用python(pipe方式)

spark rdd可以使用管道方式调用外部驱动。

所以想做个尝试,在win7 (64),用java(1.8)实现外部调用python(3.7.2)文件。但是一直失败,报**CreateProcess error=193, %1 不是有效的 Win32 应用程序。**

想请教一下,该如何修改呢

代码如下


###python

import sys

for line in sys.stdin:
    print(line)
    if isinstance(line, str):
        sys.stdout.write(line + "." + line)
    elif isinstance(line, int):
        sys.stdout.write(int(line) + 1)

###java

public static void main(String[] args){
        SparkConf conf = new SparkConf().setAppName("test1").setMaster("local");
        SparkContext sparkContext = new SparkContext(conf);
        sparkContext.setLogLevel("info");
        sparkContext.addFile("E:\\spark_pipe.py");

        JavaSparkContext sc = new JavaSparkContext(sparkContext);
        JavaRDD<Integer> rdd = sc.parallelize(Arrays.asList(1, 2, 3, 4));
        JavaRDD<String> pipe = rdd.pipe(SparkFiles.get("spark_pipe.py"));
        pipe.foreach(s -> System.out.println(s));
    }

使用pipe的时候传入参数为command,意思是命令。而在windows环境下是无法直接执行 xxx.py文件的。言下之意就是如果你想要执行py文件,你需要至少添加例如 python xxx.py命令才能运行。