scala - Spark scala减少了RDD上可能的多重过滤?
问题描述
def isSmallerScore(value:Int): Boolean ={
val const = 200
if(value < const) true else false
}
val rdd = sc.parallelize(Seq(("Java", 100), ("Python", 200), ("Scala", 300)))
val result1: RDD[(String, Int)] = rdd.filter(x => isSmallerScore(x._2))
val result2: RDD[(String, Int)] = rdd.filter(x => !isSmallerScore(x._2))
从上面使用过滤器的代码中,我创建了两个 RDD。一个是分数较小的,另一个 RDD 是分数较高的。为了把它分开,我做了两次过滤操作。
是否可以在单个过滤器操作中创建?如何减少另一个过滤器操作以找出结果( result1 或 result2 )
解决方案
它不是像 Informatica BDM、Talend、Pentaho 等的 ETL。您可以在其中以图形方式创建多个并行运行的管道(分支)。
您需要cache
rdd 和 filter 两次才能获得 2 个 RDD。
推荐阅读
- opendaylight - 我们应该使用 READ 交易吗?
- angular - 错误单击过滤器导致的行
- java - 将变量传递给有意图的两个活动
- oracle - oracle sql如何获取星期几
- mysql - 使用 mysql 创建新项目时找不到“config/databases/mysql.yml”
- delphi - DynArraySize() 只能在最多 649 个整数元素的数组中正常工作
- javascript - 如何创建动态字段的 Ant Design 组
- python - Python,如何获取每个文件的唯一 ID 数并将每个文件的文件名和唯一 ID 存储在 csv 文件中?
- elasticsearch - elasticsearch脚本字段,无法获取嵌套字段的值
- c++ - 在 Qt C++ 中初始化 QColors 列表