DataFrame&Dataset

本文介绍了DataFrame的产生背景和概述,强调其在关系数据库和R/Python数据帧中的等价概念。DataFrame是由多种来源构建的分布式数据集合,支持选择、过滤、聚合和绘制结构化数据。对比RDD,DataFrame提供了基于反射和编程接口的转换方法。文章还讨论了DataFrame的基本API操作,包括创建、打印模式、显示、选择和过滤,并展示了如何将RDD转换为DataFrame。最后,简述了Dataset的概念,它是Spark 1.6引入的新接口,结合了RDD的强类型和Spark SQL的优化执行。
摘要由CSDN通过智能技术生成

#DataFrame产生背景
DataFrame不是spark sql提出的,而是早在R,Pandas语言就已经存在了。

#DataFrame概述
官网概述:
A Dataset is a distributed collection of data
数据集是分布式数据集合

A DataFrame is a Dataset organized into named columns.
DataFrame是一个组织成命名列的数据集(以列(列名,列的类型,列值)形式构成的分布式数据集),按照列赋予不同的名称

ex:
student
Id:int
name:string
city:string

It is conceptually equivalent to a table in a relational database or a data frame in R/Python,
它在概念上等价于关系数据库中的表或R/Python中的数据帧,

DataFrames can be constructed from a wide array of sources such as: structured data files, tables in Hive, external databases, or existing RDDs.
DataFrames可以由一系列广泛的源构建,例如:结构化数据文件、Hive中的表、外部数据库或现有的RDDs。

An abstraction for selecting,flitering,aggregation and plotting structured data
用于选择、转送、聚合和绘制结构化数据的抽象

处理数据对比图:
在这里插入图片描述

#DataFrame对比RDD
在这里插入图片描述
RDD:
使用java/scala ==> jvm
python ==>python runtime

DataFrame:
java/scala/python ==>转换成Logic plan(逻辑计划)

#DataFrame基本的Api操作
1.Create DataFrame
2.printSchema
3.show
4.select
5.filter

import org.apache.spark.sql.SparkSession

/**
 * DataFrame API基本操作
 */
object DataFrameApp {

  def main(args: Array[String]) {

    val spark = SparkSession.builder().appName("DataFrameApp").master("local[2]").getOrCreate()

    // 将json文件加载成一个dataframe
    val peopleDF = spark.read.format("json").load("file:///Users/rocky/data/people.json")

    // 输出dataframe对应的schema信息
    peopleDF.printSchema()

    // 输出数据集的前20条记录
    peopleDF.show()

    //查询某列所有的数据: select name from table
    peopleDF.select("name").show()

    // 查询某几列所有的数据,并对列进行计算: select name, age+10 as age2 from table
    peopleDF.select(peopleDF.col("name"), (peopleDF.col("age") + 10).as("age2")).show()

    //根据某一列的值进行过滤: select * from table where age>19
    peopleDF.filter(peopleDF.col("age") > 19).show()

    //根据某一列
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值