十一、spark SQL的scala示例

简介

spark SQL官网:http://spark.apache.org/docs/latest/sql-programming-guide.html

sparkSQL是构建在sparkCore之上的组件,用于处理结构化的数据。它将数据抽象为DataFrame并提供丰富的API,并且sparkSQL允许使用SQL脚本进行操作,使得数据查询变得非常的容易使用。

同时,sparkSQL除了操作简单,API丰富之外,对于数据源的支持也很强大。你可以从,如:

1)HDFS

2)Parguet文件

3)json文件

4)JDBC

5)ODBC

6)HIVE

等多种数据源来创建dataFrame,也可以从spark的RDD转换成dataFrame。

代码示例

下面是scala的代码示例:

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{DataFrame, Row, SQLContext}
import org.apache.spark.sql.types.{IntegerType, StringType, StructField, StructType}
import org.apache.spark.{SparkConf, SparkContext}

/**
  * @Description spark sql demo
  * @Author lay
  * @Date 2018/12/09 21:33
  */
object SparkSQLDemo {
  var conf: SparkConf = _
  var sc: SparkContext = _
  var userData: Array[String] = Array("1 lay 23", "2 marry 24", "3 gary 25")
  var userRDD: RDD[Row] = _
  var sqlContext: SQLContext = _
  var df: DataFrame = _

  def init(): Unit = {
    conf = new SparkConf().setAppName("spark sql demo").setMaster("local")
    sc = new SparkContext(conf)
    // 创建sqlContext
    sqlContext = new SQLContext(sc)
    // 创建schema
    var structFields = Array(StructField("id", IntegerType), StructField("name", StringType), StructField("age", IntegerType))
    var schema = new StructType(structFields)
    // 创建RDD
    userRDD = sc.parallelize(userData).map{x => val lines = x.split(" ");Row(lines(0).toInt, lines(1), lines(2).toInt)}
    // 创建dataFrame
    df = sqlContext.createDataFrame(userRDD, schema)
  }

  def main(args: Array[String]): Unit = {
    init()
    // dataFrame方式查询:查询年龄大于23岁的用户的姓名
    df.select("name").where("age > 23").show()
    // 注册为t_user表
    df.createOrReplaceTempView("t_user")
    // SQL方式查询:年龄大于23岁的用户的姓名
    sqlContext.sql("SELECT name FROM t_user WHERE age > 23").show()
  }
}

以上代码将RDD通过StructType转换成了dataFrame,然后分别采用dataFrame的API和SQL两种方式查询出了结果,如图:

原文地址:https://www.cnblogs.com/lay2017/p/10093736.html

时间: 2024-10-11 20:40:40

十一、spark SQL的scala示例的相关文章

十二、spark MLlib的scala示例

简介 spark MLlib官网:http://spark.apache.org/docs/latest/ml-guide.html mllib是spark core之上的算法库,包含了丰富的机器学习的一系列算法.你可以通过简单的API来构建算法模型,然后利用模型来进行预测分析推荐之类的. 它包含了一些工具,如: 1)算法工具:分类.回归.聚类.协同等 2)特征化工具:特征提取.转换.降维.选择等 3)管道:用于构建.评估和调整机器学习管道的工具 4)持久性:保存和加载算法.模型.管道 5)实用

Spark SQL之External DataSource外部数据源(一)示例

一.Spark SQL External DataSource简介 随着Spark1.2的发布,Spark SQL开始正式支持外部数据源.Spark SQL开放了一系列接入外部数据源的接口,来让开发者可以实现. 这使得Spark SQL支持了更多的类型数据源,如json, parquet, avro, csv格式.只要我们愿意,我们可以开发出任意的外部数据源来连接到Spark SQL.之前大家说的支持HBASE,Cassandra都可以用外部数据源的方式来实现无缝集成. (Ps: 关于Exter

spark结构化数据处理:Spark SQL、DataFrame和Dataset

本文讲解Spark的结构化数据处理,主要包括:Spark SQL.DataFrame.Dataset以及Spark SQL服务等相关内容.本文主要讲解Spark 1.6.x的结构化数据处理相关东东,但因Spark发展迅速(本文的写作时值Spark 1.6.2发布之际,并且Spark 2.0的预览版本也已发布许久),因此请随时关注Spark SQL官方文档以了解最新信息. 文中使用Scala对Spark SQL进行讲解,并且代码大多都能在spark-shell中运行,关于这点请知晓. 概述 相比于

平易近人、兼容并蓄——Spark SQL 1.3.0概览

摘要:DataFrame API的引入一改RDD API高冷的FP姿态,令Spark变得更加平易近人.外部数据源API体现出的则是兼容并蓄,Spark SQL多元一体的结构化数据处理能力正在逐渐释放. 关于作者:连城,Databricks工程师,Spark committer,Spark SQL主要开发者之一.在4月18日召开的 2015 Spark技术峰会上,连城将做名为"四两拨千斤--Spark SQL结构化数据分析"的主题演讲. 自2013年3月面世以来,Spark SQL已经成

Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN

Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession 创建 DataFrames 无类型的Dataset操作 (aka DataFrame 操作) Running SQL Queries Programmatically 全局临时视图 创建Datasets RDD的互操作性 使用反射推断Schema 以编程的方式指定Schema Aggregatio

Spark SQL, DataFrames and Datasets 指南

概述 Spark SQL 是 Spark 处理结构化数据的模块; 与基础的 Spark RDD API 不同, Spark SQL 提供的接口提供给 Spark 更多的关于数据和执行计算的结; 内在的, Spark SQL 使用这些额外的信息去执行额外的优化; 这里有几种包括 SQL 和 Datasets API 在内的与 Spark SQL 交互的方法; 当计算结果使用相同的执行引擎, 独立于你使用的表达计算的 API/语言; 这种统一意味着开发者可以依据哪种 APIs 对于给定的表达式提供了

理解Spark SQL(二)—— SQLContext和HiveContext

使用Spark SQL,除了使用之前介绍的方法,实际上还可以使用SQLContext或者HiveContext通过编程的方式实现.前者支持SQL语法解析器(SQL-92语法),后者支持SQL语法解析器和HiveSQL语法解析器,默认为HiveSQL语法解析器,用户可以通过配置切换成SQL语法解析器来运行HiveQL不支持的语法,如:select 1.实际上HiveContext是SQLContext的子类,因此在HiveContext运行过程中除了override的函数和变量,可以使用和SQLC

spark sql 中的结构化数据

1. 连接mysql 首先需要把mysql-connector-java-5.1.39.jar 拷贝到 spark 的jars目录里面: scala> import org.apache.spark.sql.SQLContextimport org.apache.spark.sql.SQLContext scala> val sqlContext=new SQLContext(sc)warning: there was one deprecation warning; re-run with

SPark SQL编程初级实践

今下午在课上没有将实验做完,课下进行了补充,最终完成.下面附上厦门大学数据库实验室中spark实验官网提供的标准答案,以供参考. 三.实验内容和要求 1.Spark SQL 基本操作 将下列 json 数据复制到你的 ubuntu 系统/usr/local/spark 下,并保存命名为 employee.json. { "id":1 ,"name":" Ella","age":36 } { "id":2,&