java - Apache Spark RDD 和 Java 8 : Exception handling

标签 java apache-spark java-8

如果我在使用 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
                    }
                });

最佳答案

您可以使用 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;
                }
            });

关于java - Apache Spark RDD 和 Java 8 : Exception handling,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32968881/

相关文章:

java - 如果我们有 @Override 为什么没有 @Implementation 或 @Implements`?

java - 为什么 `javac -cp` 不需要 `.` 而 `java -cp` 需要?

apache-spark - 运行bin/pyspark时出现这个程序报错需要先build Spark

apache-spark - 在应用程序中使用嵌入式 Spark 的缺点

scala - Spark - 从 CSV 文件创建(标签、特征)对的 RDD

具有泛型的 Java 流

java - 通用功能接口(interface)和类型删除

java yahtzee 游戏检查满堂彩

java - 警告 :oejuc. 抽象生命周期 :FAILED?

java - 如何使用 Java 8 `Files.find` 方法?