大数据随记 —— DataFrame 数据操作

大数据系列文章👉 目录 👈

在这里插入图片描述

DataFrame 数据操作有两种操作数据的方式,一种是使用 DataFrame所支持的 SQL 语法进行数据操作,另一种使用 DataFrame 提供的相关 API 对数据进行操作。

一、DataFrame SQL 数据操作

通过 SQLContext 的 sql 方法,即可使用我们熟悉的 SQL 语法进行数据操作。

package sparksql  
  
import org.apache.spark.sql.SQLContext  
import org.apache.spark.{SparkConf, SparkContext}  
  
object DataFrameSQL {  
  
  def main(args: Array[String]): Unit = {  
  
    val sparkConf = new SparkConf().setMaster("local[2]").setAppName("DataFrameSQL")  
    val sc = new SparkContext(sparkConf)  
    
    // 创建 SQLContext 对象  
    val sqlContext = new SQLContext(sc) 
     
    // 从 JSON 中创建 DataFrame 对象 
    val df = sqlContext.read.json("resources/json/people.json")  
  
    // 使用 SQLContext 的 sql 方法对数据进行操作  ✨✨
    sqlContext.sql("select * from people where age>21")  
  
    df.show()  
    sc.stop()  
  }}

二、DataFrame API 数据操作

DataFrame 也提供了特定的 API 让我们操作 DataFrame 中的数据,也被称为 DSL(Domain-Specific Language,即领域特定语言)。使用 DSL 语法风格就不必去创建临时视图了。

package sparksql  
  
import org.apache.spark.sql.SQLContext  
import org.apache.spark.{SparkConf, SparkContext}  
  
object DataFrameAPI {  
  
  def main(args: Array[String]): Unit = {  
  
    val sparkConf = new SparkConf().setMaster("local[2]").setAppName("DataFrameAPI")  
    val sc = new SparkContext(sparkConf)  
    val sqlContext = new SQLContext(sc)  
  
    // 使用 SQLContext 将 JSON 文件转成 DataFrame    
    val df = sqlContext.read.json("resources/json/people.json")  
  
    // 使用 show 方法将 DataFrame 的内容输出  ✨✨
    df.show()  
  
    // 使用 printSchema 方法输出 DataFrame 的 Scheme 信息 ✨✨ 
    df.printSchema()  
  
    // 使用 select 方法来选择所需要的字段,这里则选择 name 字段  ✨✨
    df.select("name").show()  
  
    // 使用 select 方法选择所需要的字段,并为 age 字段加 1  ✨✨  
    df.select(df("name"),df("age")+1).show()  
  
    // 使用 filter 方法完成条件过滤,这里过滤 age > 21 的数据并打印  ✨✨
    df.filter(df("age")>21).show()  
  
    // 使用 groupBy 方法进行分组,求分组后的总数  ✨✨
    df.groupBy("age").count().show()  
  
    sc.stop()  
  
  }
}

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

繁依Fanyi

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值