博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Spark SQL and DataFrame
阅读量:6476 次
发布时间:2019-06-23

本文共 1908 字,大约阅读时间需要 6 分钟。

一、概念

1.Spark SQL:

Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。同时Spark SQL还可以作为分布式的SQL查询引擎。Spark SQL最重要的功能之一,就是从Hive中查询数据

2.DataFrame

DataFrame,可以理解为是,以列的形式组织的,分布式的数据集合。它其实和关系型数据库中的表非常类似,但是底层做了很多的优化。DataFrame可以通过很多来源进行构建,包括:结构化的数据文件Hive中的表外部的关系型数据库以及RDD

3.SQLConetext

要使用Spark SQL,首先就得创建一个创建一个SQLContext对象,或者是它的子类的对象,比如HiveContext的对象。

Java版本:JavaSparkContext sc = ...; SQLContext sqlContext = new SQLContext(sc);Scala版本:val sc = new SparkContext ().setAppName().setMaster() val sqlContext = new SQLContext(sc)import sqlContext.implicits._复制代码

4.HiveContext

除了基本的SQLContext以外,还可以使用它的子类——HiveContext。HiveContext的功能除了包含SQLContext提供的所有功能之外,还包括了额外的专门针对Hive的一些功能。

这些额外功能包括:

使用HiveQL语法来编写和执行SQL

使用Hive中的UDF函数

从Hive表中读取数据

  • 要使用HiveContext,就必须预先安装好Hive,SQLContext支持的数据源,HiveContext也同样支持——而不只是支持Hive。

  • 对于Spark 1.3.x以上的版本,都推荐使用HiveContext,因为其功能更加丰富和完善。

  • Spark SQL还支持用spark.sql.dialect参数设置SQL的方言。

  • 使用SQLContext的setConf()即可进行设置。

  • 对于SQLContext,它只支持“sql”一种方言。对于HiveContext,它默认的方言是“hiveql”。

二、代码

1.创建DataFrame

使用SQLContext,可以从RDD、Hive表或者其他数据源,来创建一个DataFrame。以下是一个使用JSON文件创建DataFrame的例子:

Java版本:JavaSparkContext sc = ...; SQLContext sqlContext = new SQLContext(sc);DataFrame df = sqlContext.read().json("hdfs://spark1:9000/students.json");df.show();Scala版本:val sc = new SparkContext ...val sqlContext = new SQLContext(sc)val df = sqlContext.read.json("hdfs://spark1:9000/students.json")df.show()复制代码

2.DataFrame的常用操作

Java版本DataFrame df = sqlContext.read().json("hdfs://spark1:9000/students.json");df.show();df.printSchema();df.select("name").show();df.select(df.col("name"), df.col("age").plus(1)).show();df.filter(df.col("age").gt(21)).show();df.groupBy("age").count().show();Scala版本val df = sqlContext.read.json("hdfs://spark1:9000/students.json")df.show()df.printSchema()df.select("name").show()df.select(df("name"), df("age") + 1).show()df.filter(df("age") > 21).show()df.groupBy("age").count().show()复制代码

转载地址:http://ytqko.baihongyu.com/

你可能感兴趣的文章
190行代码实现mvvm模式
查看>>
兼容几乎所有浏览器的透明背景效果
查看>>
jeesite 框架搭建与配置
查看>>
Linux VNC server的安装及简单配置使用
查看>>
阿里宣布开源Weex ,亿级应用匠心打造跨平台移动开发工具
查看>>
Android项目——实现时间线程源码
查看>>
招商银行信用卡重要通知:消费提醒服务调整,300元以下消费不再逐笔发送短信...
查看>>
C#_delegate - 调用列表
查看>>
[转]Windows的批处理脚本
查看>>
多维数组元素的地址
查看>>
数据库运维体系_SZMSD
查看>>
福大软工1816 · 第三次作业 - 结对项目1
查看>>
静态库 调试版本 和发布版本
查看>>
JAVA中的finalize()方法
查看>>
慕课网学习手记--炫丽的倒计时效果Canvas绘图与动画基础
查看>>
基本分类方法——KNN(K近邻)算法
查看>>
.NET Framework3.0/3.5/4.0/4.5新增功能摘要
查看>>
熟悉常用的Linux操作
查看>>
面象过程与面象对象
查看>>
谷歌设置支持webgl
查看>>