SparkSQL(9)RDD2DataFrame

2024-05-24 11:48
文章标签 sparksql rdd2dataframe

本文主要是介绍SparkSQL(9)RDD2DataFrame,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、两种方式

【参考官网:http://spark.apache.org/docs/2.1.0/sql-programming-guide.html#programmatically-specifying-the-schema】

  • Inferring the Schema Using Reflection(反射方式)
  • Programmatically Specifying the Schema(编程的方式)

二、反射方式

1.代码(服务器验证)

  //方式一:反射方式val spark=SparkSession.builder().appName("RDD2DataFrameSpark").master("local[2]").getOrCreate()    val rdd = spark.sparkContext.textFile("datas/info.txt")//使用DataFrame API// For implicit conversions from RDDs to DataFramesimport spark.implicits._val infoDF = rdd.map(_.split(",")).map(line => Info(line(0).toInt, line(1), line(2).toInt)).toDF()infoDF.show()//后续处理infoDF.filter(infoDF.col("age") > 30).show()//创建一个临时的表名称infoDF.createOrReplaceTempView("infos")spark.sql("select * from infos where age > 30").show()spark.close()

其中Info定义为:

case class Info(id:Int,name:String,age:Int)

2.重点

(1)使用隐式转换toDF()直接将RDD转换为DF,但是前提是需要引入:

import spark.implicits._

(2)后续操作

  既可以通过DF的API,也可以通过createDataFrame创建临时表,然后使用sql语句来操作分析。

(3)服务器不用开启master和worker即可工作

三、编程的方式

1.代码(服务器验证)

    val spark=SparkSession.builder().appName("RDD2DataFrameSpark").master("local[2]").getOrCreate()//1.转换为RDDval rdd = spark.sparkContext.textFile("datas/info.txt")//2.转换为Row类型的RDDval infoRDD: RDD[Row] = rdd.map(_.split(",")).map(line => Row(line(0).toInt, line(1), line(2).toInt))//3.构建StructTypeval structType=StructType(Array(StructField("id",IntegerType,true),StructField("name",StringType,true),StructField("age",IntegerType,true)))//4.构建dataframe
//    spark.createDataFrame(infoRDD,structType)val infoDF=  spark.createDataFrame(infoRDD,structType)infoDF.printSchema()infoDF.show()spark.close()

2.重点

(1)构建ROW类型的RDD,以及StructType。

(2)createDataFrame方法将infoRDD和structType关联起来

 

 

这篇关于SparkSQL(9)RDD2DataFrame的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/998319

相关文章

SparkSQL在字节跳动的应用实践和优化实战

来源:字节跳动白泉的分享 作者:大数据技术与架构整理 点击右侧关注,大数据开发领域最强公众号! 点击右侧关注,暴走大数据! By  大数据技术与架构 场景描述: 面对大量复杂的数据分析需求,提供一套稳定、高效、便捷的企业级查询分析服务具有重大意义。本次演讲介绍了字节跳动

SparkSQL内核解析-执行全过程概述

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! 从SQL到RDD // 创建SparkSession类。从2.0开始逐步替代SparkContext称为Spark应用入口var spark = SparkSession.builder().appName("appName").master("local").getOrCreate()

【硬刚大数据之面试篇】2021年从零到大数据专家面试篇之SparkSQL篇

📢欢迎关注博客主页:https://blog.csdn.net/u013411339 📢欢迎点赞 👍 收藏 ⭐留言 📝 ,欢迎留言交流! 📢本文由【王知无】原创,首发于 CSDN博客! 📢本文首发CSDN论坛,未经过官方和本人允许,严禁转载! 本文是对《【硬刚大数据之学习路线篇】2021年从零到大数据专家的学习指南(全面升级版)》的面试部分补充。 硬刚大数据系列文章链接:

SparkSQL DML语句详解

前言 数据操作语句用于添加、更改或删除数据。Spark SQL 支持以下数据操作语句: INSERT TABLEINSERT OVERWRITE DIRECTORYLOAD INSERT TABLE INSERT 语句将新行插入到表中,或者覆盖表中现有的数据。插入的行可以通过值表达式指定,也可以是查询的结果。 语法 INSERT [ INTO | OVERWRITE ] [ TABL

SparkSQL缓存的用法

前言 SparkSQL关于缓存的操作语句官方给了三种: CACHE TABLE(缓存表)UNCACHE TABLE(清除指定缓存表)CLEAR CACHE(清除所有缓存表) 下面我们详细讲解这些语句的使用方法。 CACHE TABLE CACHE TABLE 语句使用给定的存储级别缓存表的内容或查询的输出。如果一个查询被缓存,那么将为此查询创建一个临时视图。这减少了在未来的查询中对

大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程

点一下关注吧!!!非常感谢!!持续更新!!! 目前已经更新到了: Hadoop(已更完)HDFS(已更完)MapReduce(已更完)Hive(已更完)Flume(已更完)Sqoop(已更完)Zookeeper(已更完)HBase(已更完)Redis (已更完)Kafka(已更完)Spark(正在更新!) 章节内容 上节我们完成了如下的内容: SparkSQL 语句 编码 测试 结果输入

Java实现SparkSQL Thrift方式读取Hive数据

前提是启动Thrit端口,我这里Thrift端口12000。 @Overridepublic QueryResult SparkOnLine(String sql, String userName) {ResultSet resultSet = null; Statement stmt = null; Connection conn = null; boolean

Java实现SparkSQL查询Hive表数据

简单说: 项目代码 package test;import org.apache.log4j.Level;import org.apache.log4j.Logger;import org.apache.spark.sql.SparkSession;public class SparkSQLJob {private static final String WRITE_FORMAT

Java实现SparkSQL Thrift 方式读取Hive数据

private List<List<String>> queryHiveData(String sql) {ResultSet resultSet = null; Statement stmt = null; Connection conn = null; boolean flag = true; int columnsCount = 0; String U

SparkSQL遵循ANSI标准

ANSI简介 ANSI Compliance通常指的是遵循美国国家标准学会(American National Standards Institute, ANSI)制定的标准。在计算机科学和技术领域,这通常涉及到数据库管理系统(DBMS)对于SQL语言的支持程度。 ANSI为SQL(Structured Query Language)制定了多个标准,这些标准定义了如何以一致的方式编写SQL查询