我的Spark工作(Java Spark)在集群上运行时被杀死,但在本地运行正常

时间:2019-07-06 15:35:12

标签: java apache-spark yarn hue oozie-workflow

我尝试在纱线簇上运行Java-spark代码,以检查在处理大数据时速度较慢的本地效率, 但是在创建工作流程并创建上述代码的jar之后,有时在提交作业时我的sparkjob被杀死,但是在本地运行jar时运行正常,没有任何错误。

我在代码中使用了一些简单的java方法,其中我将两个参数用作两个路径,并且其中一个路径导致hdfs中的错误,表明找不到该路径(java.nio.file.NoSuchFileException)

下面是发生异常的地方

f.repartition(1).write()
.mode(SaveMode.Overwrite)
.format("com.databricks.spark.csv")
         .option("header", "true")
         .option("delimiter", "|")
         .save("E:\\data\\Dump\\praga\\showtest");


String inputFile ="E:\\data\\Dump\\praga\\showtest", outFile="E:\\data\\Dump\\praga\\showtest\\showout2.csv";


inputFile+="\\part-00000";

call(inputFile, outFile);

上面的方法纯粹是Java代码,不包含任何spark方法,这会导致作业被杀死吗?

下面的方法

public static void call(String a, String b) {

    ArrayList <Do> result = new ArrayList <Do> ();
    try {
        BufferedReader br = new BufferedReader(new FileReader(a));
        String line = "";
        Boolean setDate = false;
        while ((line = br.readLine()) != null) {
            Do do1 = new Do();

            System.err.println(line);
            java.lang.String[] lineArray = line.split("\\|");
            int index = 0;
            setDate = false;
            String openDate = null,
            closedDate = null;
            while (index < lineArray.length) {
                //System.out.println("processing data "+index);
                if (index == 0) {
                    do1.setTelephone(lineArray[0]);
                    do1.setOpen(lineArray[1]);
                    do1.setUpdate(lineArray[1]);
                    List < Do > do2 = result.stream().filter(customer - >lineArray[0].equals(customer.getTelephone())).collect(Collectors.toList());
                    if (!do2.isEmpty()) {
                        int indexOf = do2.size() - 1;
                        int inc = 0;
                        for (Do item: do2) {

                            if (indexOf == inc) {
                                ////
                                some conditions and getter setter methods using pojo classes

                            }
                            //System.out.println(do1);
                            if (!setDate) {
                                result.add(do1);
                            }
                        }
                        System.err.println("result size" + result.size());
                        System.out.println("result " + result);
                        br.close();

                        FileWriter writer;
                        //System.err.println("list "+result.size());
                        writer = new FileWriter(b); //here the output path is writted

                        //True = Append to file, false = Overwrite
                        //remove the header column from the list
                        result.remove(0);
                        //
                        // // Write CSV
                        String[] lineArray = headerColumn.split("\\|");
                        int index = 0;
                        while (index < lineArray.length) {
                            writer.write(lineArray[index]);
                            writer.write("|");
                            index++;
                        }
                        writer.write("\r\n");

                        for (Do do1: result) {
                            //for all columns conditions checked and thwy are wriiten as csv file format in the outpath
                        }

                        writer.write("\r\n");

                    }

                    System.out.println("Write success!");
                    System.err.println("result size" + result.size());
                    writer.close();

在本地运行上述代码时,csv文件已成功写入输出文件路径,并且代码已成功执行

但是在群集上运行时,它在色调浏览器中被杀死,并显示未找到指定输出路径的路径

在这一部分之前,代码将在hue浏览器yarn集群中成功执行

f.repartition(1).write()
 .mode(SaveMode.Overwrite)
 .format("com.databricks.spark.csv")
          .option("header", "true")
          .option("delimiter", "|")
          .save("E:\\data\\Dump\\praga\\showtest");

在hdfs中创建了showtest文件夹,还成功创建了部分00000文件,但是在该部分获取异常之后,是否有任何方法可以解决此问题?

0 个答案:

没有答案