iis服务器助手广告
返回顶部
首页 > 资讯 > 精选 >SparkSQL如何运用
  • 250
分享到

SparkSQL如何运用

2023-06-29 17:06:06 250人浏览 八月长安
摘要

今天小编给大家分享一下sparksql如何运用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一:SparkSQL1.Spar

今天小编给大家分享一下sparksql如何运用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

    一:SparkSQL

    1.SparkSQL简介

    Spark SQL是Spark的一个模块,用于处理结构化的数据,它提供了一个数据抽象DataFrame(最核心的编程抽象就是DataFrame),并且SparkSQL作为分布式SQL查询引擎。
    Spark SQL就是将SQL转换成一个任务,提交到集群上运行,类似于Hive的执行方式。

    2.SparkSQL运行原理

    将Spark SQL转化为RDD,然后提交到集群执行。

    3.SparkSQL特点

    (1)容易整合,Spark SQL已经集成在Spark中

    (2)提供了统一的数据访问方式:JSON、CSV、JDBC、Parquet等都是使用统一的方式进行访问

    (3)兼容 Hive

    (4)标准的数据连接:JDBC、ODBC

    二、SparkSQL运用

    SparkSQL如何运用

    package sqlimport org.apache.avro.ipc.specific.Personimport org.apache.sparkimport org.apache.spark.rdd.RDDimport org.apache.spark.sqlimport org.apache.spark.sql.catalyst.InternalRowimport org.apache.spark.sql.{DataFrame, Dataset, Row, SparkSession}import org.junit.Testclass Intro {  @Test  def dsIntro(): Unit ={    val spark: SparkSession = new sql.SparkSession.Builder()      .appName("ds intro")      .master("local[6]")      .getOrCreate()    //导入隐算是shi转换    import spark.implicits._    val sourceRDD: RDD[Person] =spark.sparkContext.parallelize(Seq(Person("张三",10),Person("李四",15)))    val personDS: Dataset[Person] =sourceRDD.toDS();//personDS.printSchema()打印出错信息    val resultDS: Dataset[Person] =personDS.where('age>10)      .select('name,'age)      .as[Person]    resultDS.show()  }  @Test  def dfIntro(): Unit ={    val spark: SparkSession =new SparkSession.Builder()      .appName("ds intro")      .master("local")      .getOrCreate()    import spark.implicits._    val sourceRDD: RDD[Person] = spark.sparkContext.parallelize(Seq(Person("张三",10),Person("李四",15)))    val df: DataFrame = sourceRDD.toDF()//隐shi转换    df.createOrReplaceTempView("person")//创建表    val resultDF: DataFrame =spark.sql("select name from person where age>=10 and age<=20")    resultDF.show()  }  @Test  def database1(): Unit ={    //1.创建sparkSession    val spark: SparkSession =new SparkSession.Builder()      .appName("database1")      .master("local[6]")      .getOrCreate()      //2.导入引入shi子转换    import spark.implicits._    //3.演示    val sourceRDD: RDD[Person] =spark.sparkContext.parallelize(Seq(Person("张三",10),Person("李四",15)))    val dataset: Dataset[Person] =sourceRDD.toDS()    //Dataset 支持强类型的api    dataset.filter(item => item.age >10).show()    //Dataset 支持若弱类型的API    dataset.filter('age>10).show()    //Dataset 可以直接编写SQL表达式    dataset.filter("age>10").show()  }  @Test  def database2(): Unit ={    val spark: SparkSession = new SparkSession.Builder()      .master("local[6]")      .appName("database2")      .getOrCreate()    import spark.implicits._    val dataset: Dataset[Person] =spark.createDataset(Seq(Person("张三",10),Person("李四",20)))    //无论Dataset中放置的是什么类型的对象,最终执行计划中的RDD上都是internalRow    //直接获取到已经分析和解析过得Dataset的执行计划,从中拿到RDD    val executionRdd: RDD[InternalRow] =dataset.queryExecution.toRdd    //通过将Dataset底层的RDD通过Decoder转成了和Dataset一样的类型RDD    val typedRdd:RDD[Person] = dataset.rdd    println(executionRdd.toDebugString)    println()    println()    println(typedRdd.toDebugString)  }  @Test  def database3(): Unit = {    //1.创建sparkSession    val spark: SparkSession = new SparkSession.Builder()      .appName("database1")      .master("local[6]")      .getOrCreate()    //2.导入引入shi子转换    import spark.implicits._    val dataFrame: DataFrame = Seq(Person("zhangsan", 15), Person("lisi", 20)).toDF()    //3.看看DataFrame可以玩出什么花样    //select name from...    dataFrame.where('age > 10)      .select('name)      .show()  }//  @Test//  def database4(): Unit = {//    //1.创建sparkSession//    val spark: SparkSession = new SparkSession.Builder()//      .appName("database1")//      .master("local[6]")//      .getOrCreate()//    //2.导入引入shi子转换//    import spark.implicits._//    val personList=Seq(Person("zhangsan",15),Person("lisi",20))////    //1.toDF//    val df1: DataFrame =personList.toDF()//    val df2: DataFrame =spark.sparkContext.parallelize(personList).toDF()//      //2.createDataFrame//    val df3: DataFrame =spark.createDataFrame(personList)////    //3.read//    val df4: DataFrame =spark.read.csv("")//    df4.show()//  }  //toDF()是转成DataFrame,toDs是转成Dataset  //  DataFrame就是Dataset[Row] 代表弱类型的操作,Dataset代表强类型的操作,中的类型永远是row,DataFrame可以做到运行时类型安全,Dataset可以做到 编译时和运行时都安全@Testdef database4(): Unit = {  //1.创建sparkSession  val spark: SparkSession = new SparkSession.Builder()    .appName("database1")    .master("local[6]")    .getOrCreate()  //2.导入引入shi子转换  import spark.implicits._  val personList=Seq(Person("zhangsan",15),Person("lisi",20))  //DataFrame代表弱类型操作是编译时不安全  val df: DataFrame =personList.toDF()  //Dataset是强类型的  val ds: Dataset[Person] =personList.toDS()  ds.map((person:Person) =>Person(person.name,person.age))}  @Test  def row(): Unit ={    //1.Row如何创建,它是什么    //row对象必须配合Schema对象才会有列名    val p: Person =Person("zhangsan",15)    val row: Row =Row("zhangsan",15)    //2.如何从row中获取数据    row.getString(0)    row.getInt(1)    //3.Row也是样例类、    row match {      case Row(name,age) => println(name,age)    }  }}case class Person(name: String, age: Int)

    SparkSQL如何运用

    以上就是“SparkSQL如何运用”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网精选频道。

    --结束END--

    本文标题: SparkSQL如何运用

    本文链接: https://www.lsjlt.com/news/325997.html(转载时请注明来源链接)

    有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • SparkSQL如何运用
      今天小编给大家分享一下SparkSQL如何运用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一:SparkSQL1.Spar...
      99+
      2023-06-29
    • sparksql如何调优
      这篇文章将为大家详细讲解有关sparksql如何调优,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1,jvm调优这个是扯不断,理还乱。建议能加内存就加内存,没事调啥JVM,你都不了解JVM和你的任务数据。...
      99+
      2023-06-19
    • SparkSQl简介及运行原理
      目录一:什么是SparkSQL?(一)SparkSQL简介(二)SparkSQL运行原理(三)SparkSQL特点二:DataFrame(一)什么是DataFrame?补充:Spar...
      99+
      2024-04-02
    • 深入了解SparkSQL的运用及方法
      目录一:SparkSQL1.SparkSQL简介2.SparkSQL运行原理3.SparkSQL特点二、SparkSQL运用一:SparkSQL 1.SparkSQL简介 Spark...
      99+
      2024-04-02
    • SparkSQL中DataFrame与DataSet如何使用
      本篇文章给大家分享的是有关SparkSQL中DataFrame与DataSet如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1.使用IDEA开发Spark SQL1.1...
      99+
      2023-06-20
    • SparkSQl中运行原理的示例分析
      这篇文章将为大家详细讲解有关SparkSQl中运行原理的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一:什么是SparkSQL?(一)SparkSQL简介Spark SQL是Spark的一个模块...
      99+
      2023-06-20
    • IDEA如何开发配置SparkSQL
      这篇文章将为大家详细讲解有关IDEA如何开发配置SparkSQL,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.添加依赖在idea项目的pom.xml中添加依赖。<!--spark sq...
      99+
      2023-06-20
    • SparkSQL怎么用
      小编给大家分享一下SparkSQL怎么用,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、SparkSQL的进化之路0以前: Shark1.x开始:SparkSQ...
      99+
      2023-06-20
    • 如何解析SparkSQL外部数据源
      这期内容当中小编将会给大家带来有关如何解析SparkSQL外部数据源,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。场景介绍:    大数据MapReduce,Hiv...
      99+
      2023-06-02
    • python开发sparkSQL应用
      准备条件:部署hadoop集群部署spark集群安装python(本人安装的是anaconda3,python是3.6)配置环境环境变量:vi .bashrc  #添加如下内容 export SPARK_HOME=/opt/spark/cu...
      99+
      2023-01-31
      python sparkSQL
    • SparkSQL使用快速入门
      目录一、SparkSQL的进化之路二、认识SparkSQL2.1 什么是SparkSQL2.2 SparkSQL的作用2.3 运行原理2.4 特点2.5 SparkSession2....
      99+
      2024-04-02
    • JSON.stringify如何运用
      本篇内容主要讲解“JSON.stringify如何运用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JSON.stringify如何运用”吧!语法JSON.stringify(value[,&n...
      99+
      2023-06-29
    • SparkSQL的自定义函数UDF使用
      目录Spark_SQL的UDF使用UDF简单使用Spark_SQL的UDF使用 用户自定义函数,也叫UDF,可以让我们使用Python/Java/Scala注册自定义函数,并在SQL...
      99+
      2023-02-01
      Spark SQL UDF Spark自定义函数UDF
    • SparkSQL开窗函数分析使用示例
      目录聚合函数和开窗函数开窗函数聚合开窗函数排序开窗函数开窗函数能在每行的最后一行都显示聚合函数的结果,所以聚合函数可以用作开窗函数 聚合函数和开窗函数 聚合函数是将多行变成一行,如果...
      99+
      2023-01-28
      SparkSQL开窗函数 SparkSQL窗口函数
    • 怎么进行SparkSQL部署与简单使用
      这篇文章将为大家详细讲解有关怎么进行SparkSQL部署与简单使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。一、运行环境Ø  JDK:1.8.0_45 64位Ø&nb...
      99+
      2023-06-02
    • Linux用户组如何运用
      这篇“Linux用户组如何运用”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Linux用户组如何运用”文章吧。一个用户一个用...
      99+
      2023-06-28
    • 如何运用VB.NET重载
      这篇文章主要为大家展示了“如何运用VB.NET重载”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“如何运用VB.NET重载”这篇文章吧。VB.NET重载的意思是我们可以在一个类中多次声明相同名字的...
      99+
      2023-06-17
    • python列表如何运用
      本文小编为大家详细介绍“python列表如何运用”,内容详细,步骤清晰,细节处理妥当,希望这篇“python列表如何运用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。创建列表list( ) #...
      99+
      2023-06-30
    • 如何运用虚拟主机
      要运用虚拟主机,可以按照以下步骤进行操作:1. 选择虚拟主机提供商:根据自己的需求和预算,选择一个可靠的虚拟主机提供商。确保提供商具...
      99+
      2023-08-29
      虚拟主机
    • css如何运用root类型
      小编给大家分享一下css如何运用root类型,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!灵活运用root类型响应布局中的字体大小应该能够自动调整到视区,从而保存...
      99+
      2023-06-27
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作