如何决定是否使用Spark RDD过滤器

时间:2016-10-09 12:50:50

标签: apache-spark

我使用spark来读取和分析数据文件,文件包含如下数据:

  • 1,1单元,category1_1,100
  • 2,1单元,category1_2,150
  • 3,UNIT2,category2_1,200
  • 4,单元3,category3_1,200
  • 5,单元3,category3_2,300

该文件包含大约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中提问,如果格式不正确,可以随意编辑)谢谢。

0 个答案:

没有答案
相关问题