一。如何处理RDD的filter

1. 把第一行的行头去掉

scala> val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigator.csv")
collegesRdd: org.apache.spark.rdd.RDD[String] = /user/hdfs/CollegeNavigator.csv MapPartitionsRDD[3] at textFile at <console>:24

scala> collegesRdd.count
res1: Long = 504

scala> val header= collegesRdd.first
header: String = "Name","Address","Website","Type","Awards offered","Campus setting","Campus housing","Student population","Undergraduate students","Graduation Rate","Transfer-Out Rate","Cohort Year *","Net Price **","Largest Program","IPEDS ID","OPE ID"

scala> val headerlessRdd= collegesRdd.filter( line=>{ line!= header } )
headerlessRdd: org.apache.spark.rdd.RDD[String] = MapPartitionsRDD[2] at filter at <console>:28

这里其实已经使用了一个filter,就是过滤行头的filter。

val filterRdd= headerlessRdd.filter(line =>{

val count=line.split("\",\"")(7)

val len=count.length()

len>4

})

scala> filterRdd.count
res8: Long = 121

得到学生数目大于10000的学校

二、写filter函数

上面的例子也可以写一个filter函数

def  filterfunc(line :String):Boolean ={
val count=line.split("\",\"")(7)
val len=count.length()
len > 4
} val filterRdd2=headerlessRdd.filter(filterfunc)

会得出如下结果

scala> filterRdd2.count

18/11/20 03:41:33 WARN spark.ExecutorAllocationManager: No stages are running, but numRunningTasks != 0
res10: Long = 121

补充说明一个字符串被split以后是一个字符数组,所有的字符操作参加scala的字符串操作

https://www.yiibai.com/scala/scala_strings.html

或者scala官方网站

https://www.scala-lang.org/

大数据入门到精通3-SPARK RDD filter 以及 filter 函数的更多相关文章

  1. 大数据入门到精通5--spark 的 RDD 的 reduce方法使用

    培训系列5--spark 的 RDD 的 reduce方法使用 1.spark-shell环境下准备数据 val collegesRdd= sc.textFile("/user/hdfs/C ...

  2. 大数据入门到精通4--spark的rdd的map使用方式

    学习了之前的rdd的filter以后,这次来讲spark的map方式 1.获得文件 val collegesRdd= sc.textFile("/user/hdfs/CollegeNavig ...

  3. 大数据入门到精通16--hive 的条件语句和聚合函数

    一.条件表达 case when ... then when .... then ... when ... then ...end select film_id,rpad(title,20," ...

  4. 大数据入门到精通2--spark rdd 获得数据的三种方法

    通过hdfs或者spark用户登录操作系统,执行spark-shell spark-shell 也可以带参数,这样就覆盖了默认得参数 spark-shell --master yarn --num-e ...

  5. 大数据入门到精通8-spark RDD 复合key 和复合value 的map reduce操作

    一.做基础数据准备 这次使用fights得数据. scala> val flights= sc.textFile("/user/hdfs/data/Flights/flights.cs ...

  6. 大数据入门到精通10--spark rdd groupbykey的使用

    //groupbykey 一.准备数据val flights=sc.textFile("data/Flights/flights.csv")val sampleFlights=sc ...

  7. 大数据入门到精通11-spark dataframe 基础操作

    // dataframe is the topic 一.获得基础数据.先通过rdd的方式获得数据 val ny= sc.textFile("data/new_york/")val ...

  8. 大数据入门到精通6---spark rdd reduce by key 的使用方法

    1.前期数据准备(同之前的章节) val collegesRdd= sc.textFile("/user/hdfs/CollegeNavigator.csv")val header ...

  9. 大数据入门到精通18--sqoop 导入关系库到hdfs中和hive表中

    一,选择数据库,这里使用标准mysql sakila数据库 mysql -u root -D sakila -p 二.首先尝试把表中的数据导入到hdfs文件中,这样后续就可以使用spark来dataf ...

随机推荐

  1. hive之窗口函数

    窗口函数 1.相关函数说明 COVER():指定分析函数工作的数据窗口大小,这个数据窗口大小可能会随着行的变而变化 CURRENT ROW:当前行 n PRECEDING:往前n行数据 n FOLLO ...

  2. 【Servlet】监听器入门

  3. uva-10714-贪心

    题意:有一条杆,长度为L,上面很几只蚂蚁,蚂蚁的朝向未知,爬速1cm/s,在爬行过程中,蚂蚁相撞了就往反方向爬,问,杆上没有蚂蚁至少要多久,至多要多久 解题思路: 蚂蚁1和蚂蚁2相撞,我们只要交换一下 ...

  4. 修改json文件

    第三方库jq https://stedolan.github.io/jq/manual/ cat old_deploy.json \ | jq --arg cpu_limit $cpu_limit ' ...

  5. Android 组合控件

    前言 自定义组合控件就是多个控件组合起来成为一个新的控件,主要用来解决多次重复的使用同一类型的布局.比如我们应用的顶部的标题栏,还有弹出的固定样式的dialog,这些都是常用的,所以把他们所需要的控件 ...

  6. maven项目里的mapper不被加载,解析

    出现这个错误是因为maven加载配置文件是从resource里加载的,所以要配置一下

  7. 【ASP.NET 插件】分享一款富文本web编辑器UEditor

    UEditor是由百度web前端研发部开发所见即所得富文本web编辑器,具有轻量,可定制,注重用户体验等特点,开源基于MIT协议,允许自由使用和修改代码... <%@ Page Language ...

  8. leetcode1018

    根据题目的hint,使用单层循环计算: class Solution(object): def prefixesDivBy5(self, A: 'List[int]') -> 'List[boo ...

  9. git的团队协作开发

    title: git的团队协作开发 date: 2018-04-24 14:00:03 tags: [git] --- 项目负责人创建组织架构 在控制面板中点击组织按钮,添加组织,在这里可以把组织理解 ...

  10. Java 基础 - 对象池

    对象池  优点:  防止过多的创建对象合理利用对象, 缺点: 会有线程阻塞 Demo 测试代码 package com.cjcx.pay.obj; import java.util.Enumerati ...