使用ApacheSpark-JavaAPI加载CSV文件
我对Spark和Scala API还不熟悉,我有兴趣将两个示例放在一起,以便在简洁性和可读性方面对这两种语言进行比较 这是我的Scala版本:使用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
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版本)。有什么建议吗?目前,我正在打印总行数。