iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >spark sql在scala中使用的方式有哪些
  • 547
分享到

spark sql在scala中使用的方式有哪些

2023-06-02 20:06:12 547人浏览 泡泡鱼
摘要

这篇文章主要介绍“spark sql在Scala中使用的方式有哪些”,在日常操作中,相信很多人在spark sql在scala中使用的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”spark sql

这篇文章主要介绍“spark sqlScala中使用的方式有哪些”,在日常操作中,相信很多人在spark sql在scala中使用的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”spark sql在scala中使用的方式有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

package hgs.spark.sqlimport org.apache.spark.SparkConfimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport org.apache.spark.sql.SQLContextimport org.apache.spark.sql.SQLImplicitsimport org.apache.spark.sql.types.StructTypeimport org.apache.spark.sql.types.StructFieldimport org.apache.spark.sql.types.StringTypeimport org.apache.spark.sql.types.IntegerTypeimport org.apache.spark.sql.Row//第一种方法创建dataframeobject SqlTest1 {  def main(args: Array[String]): Unit = {    val conf = new SparkConf().setAppName("sqltest1").setMaster("local")    val context = new SparkContext(conf)    val sqlContext = new SQLContext(context)        val rdd = context.textFile("d:\\person",1)    val rdd2 = rdd.map(x=>{val t = x.split(" ");person(t(0).toInt,t(1),t(2).toInt)})    //第一种方法创建dataframe,在这里需要导入隐式转换    import sqlContext.implicits._          val persondf = rdd2.toDF()      //这个方法在2.1.0里面被废除    //persondf.reGISterTempTable("person")    //使用该函数代替    persondf.createOrReplaceTempView("person")    val result = sqlContext.sql("select * from person order by age desc")    //打印查询的结果    result.show()    //或者将结果保存到文件    result.write.JSON("d://personselect")       context.stop()  }}case class person(id:Int,name:String,age:Int)//第二种方法创建dataframe//3.1.2.通过StructType直接指定Schemaobject SqlTest2{  def main(args: Array[String]): Unit = {    val conf = new SparkConf().setAppName("sqltest2").setMaster("local")    val context = new SparkContext(conf)    val sqlContext = new SQLContext(context)        val rdd = context.textFile("d:\\person",1)        //第一种方法创建dataframe,在这里需要导入隐式转换    //创建schema,即一个映射关系       val personShcema = StructType(    List(        //下面为一个列的描述,分别为 列名,数据类型,是否为空        StructField("id",IntegerType,true),        StructField("name",StringType,true),        StructField("age",IntegerType,true)     )        )        val rdd2 = rdd.map(x=>{val t = x.split(" ");Row(t(0).toInt,t(1),t(2).toInt)})    //通过这种方式创建dataframe    val persondf = sqlContext.createDataFrame(rdd2, personShcema)    //将dataframe映射为一个临时的表    persondf.createOrReplaceTempView("person")    //查询数据展示    sqlContext.sql("select * from person order by age desc").show()    context.stop()      }}
一些笔记:checkpoint:将rdd中间过程持久化到hdfs上面,如果某个rdd失败,则从hdfs回复,这样代价较小sc.setCheckpointDir("hdfs dir or other fs dir "),建议将RDD cache之后再checkpoin这样将减少一次运算直接从内存中将RDD进行checkpoin但是这样之前依赖的RDD也会被丢弃RDD Objects构建DAG--->DAGScheduler(TaskSet(每个Task在每个excutor上&&切分stage,并提价stage))    ------>TaskScheduler(Task&&提交task,)------>Worker(执行task)stage:根据依赖关系区分stage,当遇到一个宽依赖(节点之间交换数据)的时候划分一个stage其中窄依赖:父RDD的分区数据只传向一个子RDD分区,而宽依赖则是父RDD的分区数据会传向多个子RDD的或者多个分区spark SQL:处理结构化的数据DataFrames:与RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从api易用性的角度上 看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低。由于与R和pandas的DataFrame类似,Spark DataFrame很好地继承了传统单机数据分析开发体验创建DataFrame: 将数据映射为class,RDD.toDF 通过sql查询,将df注册为一个表1. df.registerTempTable("test") sqlContext.sql("select * from test").show  2.通过StructType定义:StrutType(List())hive 3.0.0 与spark1.将hive-site.xml hdfs-site.xml  core-site.xml复制到spark的conf文件夹下 ,将mysql驱动放到spark的jars文件夹下面2.在hive中的语句在spark-sql中完全适用:create table person(id int,name string,age int) row fORMat delimited fields terminated by ' ';load data inpath 'hdfs://bigdata00:9000/person' into table person;select * from person;数据如下:1hgs262wd243zz254cm243.在spark-sql console交互中会打印很多的INFO级别的信息,很烦人,解决办法是在conf文件夹下:   mv log4j.properties.template  log4j.properties将log4j.rootCateGory=INFO, console 修改为log4j.rootCategory=WARN, console

到此,关于“spark sql在scala中使用的方式有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: spark sql在scala中使用的方式有哪些

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

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

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

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

下载Word文档
猜你喜欢
  • spark sql在scala中使用的方式有哪些
    这篇文章主要介绍“spark sql在scala中使用的方式有哪些”,在日常操作中,相信很多人在spark sql在scala中使用的方式有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”spark sql...
    99+
    2023-06-02
  • Spark SQL的Join实现方法有哪些
    本篇内容主要讲解“Spark SQL的Join实现方法有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Spark SQL的Join实现方法有哪些”吧!Spa...
    99+
    2022-10-18
  • sql中去重的方式有哪些
    在SQL中,可以使用以下方式进行去重:1. 使用DISTINCT关键字:SELECT DISTINCT column1, c...
    99+
    2023-08-30
    sql
  • 在html中使用css的方式有哪些
    这篇文章主要介绍在html中使用css的方式有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!在html中使用css的三种方式:1、行内样式:同过元素的style属性来设置<...
    99+
    2022-10-19
  • sql去重的方式有哪些
    在 SQL 中,可以使用以下几种方式来去重:1. 使用 DISTINCT 关键字:使用 SELECT DISTINCT 列名...
    99+
    2023-08-08
    sql
  • sql注入的方式有哪些
    这篇文章主要讲解了“sql注入的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“sql注入的方式有哪些”吧! sql注入...
    99+
    2022-10-18
  • SQL中CBO优化方式有哪些
    这篇文章给大家分享的是有关SQL中CBO优化方式有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一条查询语句的处理包括语法分析、语句优化和查询执行三个阶段。在语句优化阶段,O...
    99+
    2022-10-19
  • sql中数据去重的方式有哪些
    在SQL中,可以使用以下方式对数据进行去重:1. 使用DISTINCT关键字:SELECT DISTINCT column_...
    99+
    2023-09-23
    sql
  • 防止sql注入的方式有哪些
    这篇文章主要讲解了“防止sql注入的方式有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“防止sql注入的方式有哪些”吧!  防止SQL注入的方式有:执行...
    99+
    2022-10-18
  • SQL语句的执行方式有哪些
    SQL语句的执行方式有以下几种:1. 交互式执行:即通过命令行或者可视化工具直接输入SQL语句并执行,结果即时显示。2. 批处理执行...
    99+
    2023-09-23
    SQL
  • 在HTML中有哪些引用CSS的方式
    小编给大家分享一下在HTML中有哪些引用CSS的方式,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   在HTML中,引入CS...
    99+
    2022-10-19
  • SQL中游标的基本使用方法有哪些
    在SQL中,游标的基本使用方法包括以下几步:1. 声明游标:使用DECLARE语句来声明一个游标,并指定游标的名称、游标的数据类型以...
    99+
    2023-08-12
    SQL
  • 数据库SQL调优的方式有哪些
    小编给大家分享一下数据库SQL调优的方式有哪些,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!方式:1、创建索引时,尽量避免全表扫...
    99+
    2022-10-18
  • java防止sql注入的方式有哪些
    Java防止SQL注入的方式有以下几种:1. 使用参数化查询(Prepared Statement):使用PreparedState...
    99+
    2023-08-23
    java sql
  • React的使用方式有哪些
    本篇内容介绍了“React的使用方式有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   React...
    99+
    2022-10-19
  • postMessage的使用方式有哪些
    postMessage的使用方式有以下几种:1. 在页面中使用:可以在页面中通过JavaScript代码调用postMessage方...
    99+
    2023-08-15
    postMessage
  • 在页面中引用css的方式有哪些
    本篇内容主要讲解“在页面中引用css的方式有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“在页面中引用css的方式有哪些”吧!   优先级:外部样式<...
    99+
    2022-10-19
  • 在powerdesigner使用实体的快捷方式有哪些
    这篇文章将为大家详细讲解有关在powerdesigner使用实体的快捷方式有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 ctrl+V ...
    99+
    2022-10-19
  • 防止SQL注入的实现方式有哪些
    今天就跟大家聊聊有关防止SQL注入的实现方式有哪些,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、SQL注入简介SQL注入是比较常见的网络攻击方式...
    99+
    2022-10-18
  • sql添加约束条件的方式有哪些
    SQL中可以使用以下方式添加约束条件:1. PRIMARY KEY约束:用于唯一标识一条记录,确保表中每个记录都具有唯一的标识。在创...
    99+
    2023-09-05
    sql
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作