6. Spark SQL和Beeline
*以下内容由《Spark快速大数据分析》整理所得。
读书笔记的第六部分是讲的是Spark SQL和Beeline。
Spark SQL是Spark用来操作结构化和半结构化数据的接口。
一、在应用中使用Spark SQL
二、Spark SQL UDF VS. Hive UDF
三、Beeline

一、在应用中使用Spark SQL
Spark SQL提供了一种特殊的RDD,叫作SchemaRDD。SchemaRDD是存放Row对象的RDD,每个Row对象代表一行记录。SchemaRDD还包含记录的结构信息(即数据字段)。有了SchemaRDD,我们就可以运行 SQL 查询。

在应用中使用Spark SQL:
(1) 初始化Spark SQL
# 导入Spark SQL(支持Hive)
from pyspark.sql import HiveContext, Row
# 当不能引入hive依赖时 (不支持Hive)
from pyspark.sql import SQLContext, Row # 在 Python 中创建SQL上下文环境(支持Hive)
hiveCtx = HiveContext(sc)
# 在 Python 中创建SQL上下文环境(不支持Hive)
hiveCtx = SparkContext(sc)
(2) 基本查询
# 例子:在Python中读取并查询推文
# 读取Json文件
input = hiveCtx.jsonFile(inputFile)
# 注册输入的SchemaRDD(将上面读取得到的SchemaRDD放入临时表,应用application退出时会自动删去它)
input.registerTempTable("tweets")
# 依据retweetCount(转发计数)选出推文(执行查询)
topTweets = hiveCtx.sql("""SELECT text, retweetCount FROM tweets ORDER BY retweetCount LIMIT 10""")
在上面例子中,我们是读取了JSON文件,但我们还可以读取其它数据格式的文件,例如: hiveCtx.parquetFile(parquetFile) 。
二、Spark SQL UDF VS. Hive UDF
(1) Spark SQL UDF
使用hiveCtx.registerFunction()自定义函数。
# 例子:Python 版本耳朵字符串长度 UDF
# 写一个求字符串长度的UDF
hiveCtx.registerFunction("strLenPython", lambda x: len(x), IntegerType())
lengthSchemaRDD = hiveCtx.sql("SELECT strLenPython('text') FROM tweets LIMIT 10")
(2) Hive UDF
只需调用 hiveCtx.sql("CREATE TEMPORARY FUNCTION name AS class.function") 。
三、Beeline
Beeline是Hive 0.11版本引入的新命令行客户端工具,基于SQLline CLI的JDBC(Java Database Connectivity: Java语言中用来规范客户端程序如何访问数据库的应用程序接口)客户端。在Beeline客户端中,你可以使用标准的HiveQL命令来创建、列举以及查询数据表。Beeline shell的好处是:在多用户间共享的缓存数据表上进行快速的数据探索。
6. Spark SQL和Beeline的更多相关文章
- 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL
周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...
- Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南
Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...
- Spark SQL 官方文档-中文翻译
Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...
- Spark SQL 之 Performance Tuning & Distributed SQL Engine
Spark SQL 之 Performance Tuning & Distributed SQL Engine 转载请注明出处:http://www.cnblogs.com/BYRans/ 缓 ...
- Spark SQL Thrift Server 配置 Kerberos身份认证和权限管理
转载请注明出处:http://www.cnblogs.com/xiaodf/ 之前的博客介绍了通过Kerberos + Sentry的方式实现了hive server2的身份认证和权限管理功能,本文主 ...
- Apache Spark 2.2.0 中文文档 - Spark SQL, DataFrames and Datasets Guide | ApacheCN
Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...
- 大数据技术之_19_Spark学习_03_Spark SQL 应用解析 + Spark SQL 概述、解析 、数据源、实战 + 执行 Spark SQL 查询 + JDBC/ODBC 服务器
第1章 Spark SQL 概述1.1 什么是 Spark SQL1.2 RDD vs DataFrames vs DataSet1.2.1 RDD1.2.2 DataFrame1.2.3 DataS ...
- Spark SQL官网阅读笔记
Spark SQL是Spark中用于结构化数据处理的组件. Spark SQL可以从Hive中读取数据. 执行结果是Dataset/DataFrame. DataFrame是一个分布式数据容器.然而D ...
- Spark SQL笔记
HDFS HDFS架构 1.Master(NameNode/NN) 对应 N个Slaves(DataNode/NN)2.一个文件会被拆分成多个块(Block)默认:128M例: 130M ==> ...
随机推荐
- ansible-playbook-roles目录结构
1. ansible-角色-roles目录结构 角色是基于已知文件结构自动加载某些vars_files,任务和处理程序的方法.按角色对内容进行分组还可以轻松与其他用户共享角色. ...
- 实验三 平面广告制作工具Photoshop基础--制作LOGO
实验三 平面广告制作工具Photoshop基础--制作LOGO [实验目的] ⑴.熟悉Photoshop的界面 ⑵.能利用photoshop处理简单的图像 [实验条件] ⑴.个人计算机一台 ⑵.个人 ...
- 增强for循环的用法
一.增强for循环 增强for循环的作用: 简化迭代器的书写格式.(注意:增强for循环的底层还是使用了迭代器遍历.)增强for循环的适用范围: 如果是实现了Iterable接口的对象或者是数组对象都 ...
- 发布MeteoInfo 1.2.8
增加了对SYNOP数据的支持(功能从C#版移植过来).数据可以从这里下载:http://weather.cod.edu/digatmos/syn/SYNOP数据搞气象的人应该多少知道些,类似MICAP ...
- 【贪心算法】HDU 5969 最大的位或
题目内容 Vjudge链接 给出一个闭区间,找该区间内两个数,使这两个数的按位或最大. 输入格式 包含至多\(10001\)组测试数据. 第一行有一个正整数,表示数据的组数. 接下来每一行表示一组数据 ...
- Linux系统编程—信号捕捉
前面我们学习了信号产生的几种方式,而对于信号的处理有如下几种方式: 默认处理方式: 忽略: 捕捉. 信号的捕捉,说白了就是抓到一个信号后,执行我们指定的函数,或者执行我们指定的动作.下面详细介绍两个信 ...
- 第二十七章 Linux系统管理之定时任务
一.定时任务概述 1.含义:设定某个日期或时间周期性执行指令. 2.crond # 守护进程 分钟级别 rond是Linux系统中用来定期执行命令或脚本的一种服务软件,一般情况下,我们安装完CentO ...
- JS图片的放大与缩小
<!doctype html><head><meta charset=utf-8" /><title>javascript控制图片缩小或者放大 ...
- C# 创建text文本并写入数据
/// <summary> /// 创建TXT文本并往里面写入数据 /// </summary> /// <param name="FileName" ...
- 【Golang】vscode 设置 go 开发环境
步骤 1. 始 Golang 语言开发选择一款合适的编辑器,能加速你敲字的灵感,这里推荐微软的 Visual Studio Code,简称 vscode. 2. 安装 go 插件 首先需要安装 go ...