spark方法总结

目录

一.创建RDD

1.从内存读取数据创建RDD

parallelize()方法:通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合上创建的(一个Seq对象)。集合的对象将会被拷贝,创建出一个可以被并行操作的分布式数据集。

makeRDD()方法:只有scala版本的才有makeRDD,和parallelize类似。makeRDD方法实际上是将传入的集合和分区数两个参数传给parallelize方法然后将返回结果作为参数传给withScope方法调用

2.从外部存储系统读取数据创建RDD

二:对数据进行操作的方法

1.map()方法转换数据

2.sortBy()方法排序

3.collect()方法查询数据

4.flatMap()方法转换数据

5.take()查询某几个值

6.union()方法合并多个RDD

7.distinct()方法去重

8.intersection()方法用于求出两个RDD的共同元素

9.subtract()方法用于将前一个RDD中在后一个RDD出现的元素删除

10.使用键值对RDD的keys和values方法

11.使用键值对RDD的reduceByKey()方法

12.使用键值对RDD的groupByKey()方法

13.使用join()方法连接两个RDD

14.使用zip()方法组合两个RDD

15.使用combineByKey()方法合并相同键的值

16.使用lookup()方法查找指定键的值

17.读取和存储文件

读取:例

查看内容:rdd.collect

存储:例

三:DataFrame基础操作

1.通过Parquet文件创建DataFrame

2.通过json文件创建DataFrame

3.通过外部数据库创建DataFrame

4.通过RDD创建DataFrame

5.查看DataFrame数据

1.printSchema:输出数据模式

2.show():查看数据:默认查看20行

3.first()/head()/take()/takeAslist():获取若干条记录

4.collect()/collectAslist():获取所有数据

6.DataFrame查询操作

1.where()方法:查询符合指定条件的数据

2.filter()筛选符合条件的数据

3.select()/selectExpr()/col()/apply()方法

4.col()/apply()方法:获取指定字段,但只可以获取一个字段,返回的是一个Column对象

5.limit()方法:指定获取前n条记录

6.order()/sort()方法:根据指定字段进行排序,默认为升序

7.groupBy()方法:根据指定字段分组操作


一.创建RDD

1.从内存读取数据创建RDD

parallelize()方法:通过调用SparkContext的parallelize方法,在一个已经存在的Scala集合上创建的(一个Seq对象)。集合的对象将会被拷贝,创建出一个可以被并行操作的分布式数据集。

例:

data = [1, 2, 3, 4, 5]  

distData = sc.parallelize(data)  

makeRDD()方法:只有scala版本的才有makeRDD,和parallelize类似。makeRDD方法实际上是将传入的集合和分区数两个参数传给parallelize方法然后将返回结果作为参数传给withScope方法调用

例:

val seq = Seq(1,Seq("iteblog.com","sparkhost1.com")),

(3,Seq("iteblog.com","sparkhost2.com")),

(2,Seq("iteblog.com","sparkhost3.com")),

val iteblog = sc.makeRDD(seq)

2.从外部存储系统读取数据创建RDD

通过HDFS文件创建RDD

例:

val test = sc.textFile("/opt/spark.txt")

二:对数据进行操作的方法

1.map()方法转换数据

2.sortBy()方法排序

3.collect()方法查询数据

4.flatMap()方法转换数据

5.take()查询某几个值

6.union()方法合并多个RDD

7.distinct()方法去重

8.intersection()方法用于求出两个RDD的共同元素

9.subtract()方法用于将前一个RDD中在后一个RDD出现的元素删除

10.使用键值对RDD的keys和values方法

11.使用键值对RDD的reduceByKey()方法

12.使用键值对RDD的groupByKey()方法

13.使用join()方法连接两个RDD

14.使用zip()方法组合两个RDD

15.使用combineByKey()方法合并相同键的值

16.使用lookup()方法查找指定键的值

17.读取和存储文件

读取:例

val input = sc.textFile("testjson.json")

查看内容:rdd.collect

存储:例

sc.parallelize(jsons).repartition(1).saveAsTextFile("json_out")

三:DataFrame基础操作

1.通过Parquet文件创建DataFrame

例:

val df = saprk.read.load("/opt/user.parquet")

2.通过json文件创建DataFrame

例:

val df = saprk.read.format("json").load("/opt/user.json")

3.通过外部数据库创建DataFrame

4.通过RDD创建DataFrame

方法一:

定义一个样例类

case class person(name:String,age:Int)

读取文件创建RDD

val data = sc.textFile("/opt/test.txt").map(_.split(","))

RDD转成DataFrame

val user = data.map(p => person(p(0),p(1),p(2).toInt)).toDF()

方法二:

5.查看DataFrame数据

1.printSchema:输出数据模式
2.show():查看数据:默认查看20行

例:

user.show()       //显示前20条数据

user.show(50)       //显示前50条数据

3.first()/head()/take()/takeAslist():获取若干条记录
4.collect()/collectAslist():获取所有数据

6.DataFrame查询操作

1.where()方法:查询符合指定条件的数据

例:

val userwhere = user.where("age = 18 and gender = 'f' ")

2.filter()筛选符合条件的数据

例:

val userwhere = user.filter("age = 18 and gender = 'f' ")

3.select()/selectExpr()/col()/apply()方法

select:例:

val userSelect = user.select("userId","gender")    //显示userId,gender字段

selectExpr:例:

val userSelect = user.selectExor("userId","gender as xx")    //显示userId,gender字段,并把gender字段取名为xx

4.col()/apply()方法:获取指定字段,但只可以获取一个字段,返回的是一个Column对象

例:

val userSelect = user.col("userId")    //显示userId字段

val userSelect = user.apply("userId")    //显示userId字段

5.limit()方法:指定获取前n条记录

例:

val user = user.limit(3)    //返回前3条记录

6.order()/sort()方法:根据指定字段进行排序,默认为升序

val user = user.orderBy(desc("ID"))     //根据id降序排列

val user = user.orderBy(asc("ID"))     //根据id升序排列

7.groupBy()方法:根据指定字段分组操作

例:

val user = user.groupBy(user("gender")).count   //根据gender字段对user进行分组,并计算元素个数

  • 8
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值