三.SparkSQL之DataFrame基本API操作

一. DataFrame的概述:
是一个分布式的数据集并且以列的形式进行组合(A DataFrame is a Dataset organized into named columns),
它在概念上等同于关系数据库中的表或R / Python中的数据框,
而Dataset(A Dataset is a distributed collection of data 分布式的数据集)

二.DataFrame对比RDD:
概念:
RDD: 是一个分布式的可以进行并行处理的集合,
DataFrame:也是一个分布式的数据集,但是DataFrame更像是传统的数据库中的一个表,除了数据之外还可以知道列名,表等,也可以支持
复杂的数据结构,map,结构体,数组等

区别:
RDD:
java/scala 使用的是 jvm环境
python 使用的是python环境

DataFrame:
java/scala/python 转换成逻辑执行计划

总结: 两者的执行效果是一样的.

三.DataFrame的基本API操作:

import org.apache.spark.sql.SparkSession
/**
  * Created by 李国辉 on 2018/10/9.
  * DataFrame API基本操作
  */
object DataFrameApp {
  def main(args: Array[String]) {
  
   val spark = SparkSession.builder().appName("DataFrameApp").master("local[2]").getOrCreate()
    val people = spark.read.format("json").load("people.json")

//输出dataframe对应的schema信息 以树的形式
people.printSchema()
结果显示:
在这里插入图片描述

//输出数据集的前20条记录
people.show()
结果显示:
在这里插入图片描述
// 查询name列的数据 等同于 select name from table
people.select(“name”).show()
在这里插入图片描述

//把列的age加10 等同于 select name,age+10 from table
people.select(people.col(“name”),people.col(“age”)+10).show()
在这里插入图片描述

    // .as() 为列取别名
    people.select(people.col("name"),(people.col("age")+10).as("age2")).show()

//根据某一列的值进行过滤: select * from table where age > 19
people.filter(people.col(“age”)>24).show()
在这里插入图片描述

 >   //根据某一列进行分组,然后再进行聚合操作: select age,count(1) from table group by age
 >  people.groupBy("age").count().show()

在这里插入图片描述
//关闭
spark.stop()
}
}

以上就是常用的DataFrame的API以及介绍。实战演练请点击查看

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值