Apache Spark RDD和Java 8:异常处理

Sha*_*kar 4 java java-8 apache-spark

如果在使用Java 8和Spark迭代文件内容时遇到任何异常,我需要跳过记录.

我不想抛出异常,我只需要跳过该记录并继续其他记录.

代码示例是:

JavaRDD<Model> fileRDD = sc.textFile("filePath")
                .map(line -> {
                    try {
                    String[] parts = line.split("\\|");
                    Long key = Long.parseLong(parts[0];
                    return line;
                    } catch (NumberFormatException nfe) {
                        //if i throw RuntimeException, its working file
                        //but i dont want to throw exception, i want to just skip the line,
                        // how do i do it using java 8 stream methods
                    }
                });
Run Code Online (Sandbox Code Playgroud)

Tag*_*eev 7

您可以使用filter而不是map:

JavaRDD<Model> fileRDD = sc.textFile("filePath")
            .filter(line -> {
                try {
                    String[] parts = line.split("\\|");
                    Long key = Long.parseLong(parts[0];
                    return true;
                } catch (NumberFormatException nfe) {
                    return false;
                }
            });
Run Code Online (Sandbox Code Playgroud)