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 ==> ...
随机推荐
- docker-命令帮助
1. 命令参考 http://www.runoob.com/docker/docker-command-manual.html2. docker-命令,可以使用docker --help查看或 ...
- 飞翔---------双重线性dp
题目: 鹰最骄傲的就是翱翔,但是鹰们互相都很嫉妒别的鹰比自己飞的快,更嫉妒其他的鹰比自己飞行的有技巧.于是,他们决定举办一场比赛,比赛的地方将在一个迷宫之中. 这些鹰的起始点被设在一个N*M矩阵的左下 ...
- linux(centos8): 临时关闭/永久关闭交换分区swap?
一,为什么要关闭swap? 1,swap的用途? swap 分区就是交换分区,(windows平台叫虚拟内存) 在物理内存不够用时, 操作系统会从物理内存中把部分暂时不被使用的数据转移到交换分区, 从 ...
- centos6.8 架设 Telnet 服务
centos6.8 架设 Telnet 非常简单 百度云下载RPM,然后上传到服务器 链接:https://pan.baidu.com/s/1w91HBf1TOJsZsqBMQnO7tA 提取码:au ...
- 小tip:CSS计数器+伪类实现数值动态计算与呈现【转】
[原文]http://www.zhangxinxu.com/wordpress/2014/12/css-counters-pseudo-class-checked-numbers/ 一.CSS计数器为 ...
- 第三章 TCP/IP 模型
一.产生背景 1.伴随着计算机网络的飞跃发展,各大厂商根据自己的协议生产出了不同的硬件和软件 2.为了实现网络设备间的互相通讯,ISO和IEEE相继提出了OSI参考模型及其TCP/IP模型 二.TCP ...
- 【应用服务 App Service】当使用EntityFrameWorkCore访问Sql Server数据库时,在Azure App Service会出现Cannot create a DbSet for ** because this type is not included in the model for the context的错误
问题情形 使用EF Core访问数据库,在本地运行正常,发布到App Service后,偶尔出现了Cannot create a DbSet for ** because this type is n ...
- Linux 生产主流版本
CentOS 8 下载 https://mirrors.aliyun.com/centos/8.1.1911/isos/x86_64/CentOS-8.1.1911-x86_64-dvd1.iso L ...
- [C#] (原创)一步一步教你自定义控件——03,SwitchButton(开关按钮)
一.前言 技术没有先进与落后,只有合适与不合适. 本篇的自定义控件是:开关按钮(SwitchButton). 开关按钮非常简单,实现方式也多种多样,比如常见的:使用两张不同的按钮图片,代表开和关,然后 ...
- hasmap hashtable
hashMap和hashtable方面的知识点吧: 1. 关于HashMap的一些说法: a) HashMap实际上是一个"链表散列"的数据结构,即数组和链表的结合体.HashMa ...