欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 幼教 > DataFrame

DataFrame

2025/2/21 3:30:13 来源:https://blog.csdn.net/qq_43494013/article/details/143594684  浏览:    关键词:DataFrame

目录

  • 一、创建DataFrame
  • 二、Sql语法
  • 三、DSL语法
  • 四、RDD与DataFrame互相转换

一、创建DataFrame

在SparkSql中SparkSession是创建DataFrame和执行Sql的入口,创建DataFrame有三种方式:

  1. 通过Spark的数据源进行创建
    在这里插入图片描述

  2. 从一个存在的RDD进行转换

  3. 从Hive Table进行查询返回

二、Sql语法

Sql语法风格是指我们查询数据的时候使用Sql语句来查询,这种风格的查询必须要有临时视图或者全局视图来辅助

在这里插入图片描述
注意:
普通临时表是Session范围内的,如果想应用范围内有效,可以使用全局临时表,使用全局临时表时需要全路径访问,如:global_temp.people

对于DataFrame创建一个全局表:

df.createGlobalTempView("people")

通过Sql语句实现查询全表

在这里插入图片描述

三、DSL语法

DataFrame提供了一个特定领域语言(domain-specific language,DSL)去管理结构化的数据,可以在Scala,Java,Python和R中使用DSL,使用DSL语法风格不必去创建临时视图了

在这里插入图片描述
注意:
当涉及到运算的时候,每列都必须使用$,或者采用引号表达式:单引号+字段名
在这里插入图片描述
起别名:
在这里插入图片描述
查看age大于等于30的数据:
在这里插入图片描述
根据 age 分组,查看数据条数
在这里插入图片描述

四、RDD与DataFrame互相转换

在IDEA中开发程序时,如果需要RDD与DF或者DS之间互相操作,那么需要引入:

import spark.implicits._

这里的spark不是scala中的包名,而是创建的sparkSession对象的变量名称,所以必须先创建SparkSession对象再导入,这里的spark对象不能使用var声明,因为scala只支持val修饰的对象的引入,spark-shell中无需导入,自动完成此操作

在这里插入图片描述
用var修饰的话,编译不通过

rdd与dataframe互相转换:

 val spark: SparkSession = SparkSession.builder().master("local[*]").getOrCreate()import spark.implicits._val rdd: RDD[Int] = spark.sparkContext.makeRDD(List(1,2,3,4,5))val df: DataFrame = rdd.toDF("id")val rdd2: RDD[Row] = df.rdddf.show()println("-" * 100)rdd2.collect().foreach(println)

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词