使用ApacheSpark-JavaAPI加载CSV文件

使用ApacheSpark-JavaAPI加载CSV文件,java,scala,apache-spark,Java,Scala,Apache Spark,我对Spark和Scala API还不熟悉,我有兴趣将两个示例放在一起,以便在简洁性和可读性方面对这两种语言进行比较 这是我的Scala版本: import java.io.StringReader import au.com.bytecode.opencsv.CSVReader import org.apache.spark.{SparkConf, SparkContext} object LoadCSVScalaExample { def main(args: Array[String

我对Spark和Scala API还不熟悉,我有兴趣将两个示例放在一起,以便在简洁性和可读性方面对这两种语言进行比较

这是我的Scala版本:

import java.io.StringReader
import au.com.bytecode.opencsv.CSVReader
import org.apache.spark.{SparkConf, SparkContext}

object LoadCSVScalaExample {
  def main(args: Array[String]) {
    val conf = new SparkConf().setAppName("MyLoadCSVScalaExampleApplication").setMaster("local[*]")
    val sc = new SparkContext(conf)
    val input = sc.textFile("D:\\MOCK_DATA_spark.csv")
    val result = input.map { line => val reader = new CSVReader(new StringReader(line));
      reader.readNext()
    }
    print("This is the total count " + result.count())
  }
}
然而,这是Java对应物:

import au.com.bytecode.opencsv.CSVReader;
import org.apache.spark.SparkConf;
import org.apache.spark.api.java.JavaRDD;
import org.apache.spark.api.java.JavaSparkContext;
import org.apache.spark.api.java.function.Function;

import java.io.StringReader;

public class LoadCSVJavaExample implements Function<String, String[]> {

    public static void main(String[] args) {
        SparkConf conf = new SparkConf().setAppName("MyLoadCSVJavaExampleApp").setMaster("local[*]");
        JavaSparkContext sc = new JavaSparkContext(conf);
        JavaRDD<String> csvFile = sc.textFile("D:\\MOCK_DATA_spark.csv");
        JavaRDD<String[]> csvData = csvFile.map(new LoadCSVJavaExample());
        System.out.println("This prints the total count " + csvData.count());
    }

    public String[] call(String line) throws Exception {
        CSVReader reader = new CSVReader(new StringReader(line));
        return reader.readNext();
    }
}
import au.com.bytecode.opencsv.CSVReader;
导入org.apache.spark.SparkConf;
导入org.apache.spark.api.java.JavaRDD;
导入org.apache.spark.api.java.JavaSparkContext;
导入org.apache.spark.api.java.function.function;
导入java.io.StringReader;
公共类LoadCSVJavaExample实现函数{
公共静态void main(字符串[]args){
SparkConf conf=new SparkConf().setAppName(“MyLoadCSVJavaExampleApp”).setMaster(“local[*]”);
JavaSparkContext sc=新的JavaSparkContext(conf);
JavaRDD csvFile=sc.textFile(“D:\\MOCK\u DATA\u spark.csv”);
JavaRDD csvData=csvFile.map(新的LoadCSVJavaExample());
System.out.println(“这将打印总计数”+csvData.count());
}
公共字符串[]调用(字符串行)引发异常{
CSVReader reader=新CSVReader(新StringReader(行));
返回reader.readNext();
}
}
但是,我不确定Java示例是否确实正确?我能听听你的想法吗?我知道我可以使用,但是我想知道当前的示例是否正确,以及如何进一步改进

谢谢你的帮助


I.

它们看起来和我一模一样。它们会产生意想不到的结果吗?@YuvalItzchakov,谢谢你的评论,谢谢。不,我没有得到任何意外的结果,但我想知道我是否可以以任何方式改进它(Java版本)。有什么建议吗?目前,我正在打印总行数。它们看起来和我一样。它们会产生意想不到的结果吗?@YuvalItzchakov,谢谢你的评论,谢谢。不,我没有得到任何意外的结果,但我想知道我是否可以以任何方式改进它(Java版本)。有什么建议吗?目前,我正在打印总行数。