我使用spark来读取和分析数据文件,文件包含如下数据:
该文件包含大约2000万条记录。如果用户输入单位或类别,spark需要通过inputUnit或inputCategory过滤数据。
解决方案1:
https://sozialoekonomie.klausurenarchiv.de/data/Makro%C3%B6konomie/Pfannkuche/1474905178102463842/Makroo%CC%88konomie%20Pfannekuche%20SoSe%2015%20mit%20Lo%CC%88sung%201,3.pdf
解决方案2:
sc.textFile(file).map(line => {
val Array(id,unit,category,amount) = line.split(",")
if ( (StringUtils.isNotBlank(inputUnit) && unit != inputUnit ) ||
(StringUtils.isNotBlank(inputCategory) && category != inputCategory)){
null
} else {
val obj = new MyObj(id,unit,category,amount)
(id,obj)
}
}).filter(_!=null).collectAsMap()
我想了解,哪种解决方案更好,或者两者都很差?如果两者都很差,怎么做一个好的?就个人而言,我认为第二个更好,但我不太确定将rdd声明为var是否很好...(我是Spark新手,我使用Spark 1.5.0和Scala 2.10.4来编写代码,这是我第一次在StackOverFlow中提问,如果格式不正确,可以随意编辑)谢谢。