前往小程序,Get更优阅读体验!
立即前往
发布
社区首页 >专栏 >大数据随记 —— DataFrame 数据操作

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

作者头像
繁依Fanyi
发布2023-05-07 19:26:22
发布2023-05-07 19:26:22
33200
代码可运行
举报
运行总次数:0
代码可运行

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

一、DataFrame SQL 数据操作

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

代码语言:javascript
代码运行次数:0
复制
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 语法风格就不必去创建临时视图了。

代码语言:javascript
代码运行次数:0
复制
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()  
  
  }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-09-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、DataFrame SQL 数据操作
  • 二、DataFrame API 数据操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档