*以下内容由《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的更多相关文章

  1. 【原】Learning Spark (Python版) 学习笔记(三)----工作原理、调优与Spark SQL

    周末的任务是更新Learning Spark系列第三篇,以为自己写不完了,但为了改正拖延症,还是得完成给自己定的任务啊 = =.这三章主要讲Spark的运行过程(本地+集群),性能调优以及Spark ...

  2. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  3. Spark SQL 官方文档-中文翻译

    Spark SQL 官方文档-中文翻译 Spark版本:Spark 1.5.2 转载请注明出处:http://www.cnblogs.com/BYRans/ 1 概述(Overview) 2 Data ...

  4. Spark SQL 之 Performance Tuning & Distributed SQL Engine

    Spark SQL 之 Performance Tuning & Distributed SQL Engine 转载请注明出处:http://www.cnblogs.com/BYRans/ 缓 ...

  5. Spark SQL Thrift Server 配置 Kerberos身份认证和权限管理

    转载请注明出处:http://www.cnblogs.com/xiaodf/ 之前的博客介绍了通过Kerberos + Sentry的方式实现了hive server2的身份认证和权限管理功能,本文主 ...

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

    Spark SQL, DataFrames and Datasets Guide Overview SQL Datasets and DataFrames 开始入门 起始点: SparkSession ...

  7. 大数据技术之_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 ...

  8. Spark SQL官网阅读笔记

    Spark SQL是Spark中用于结构化数据处理的组件. Spark SQL可以从Hive中读取数据. 执行结果是Dataset/DataFrame. DataFrame是一个分布式数据容器.然而D ...

  9. Spark SQL笔记

    HDFS HDFS架构 1.Master(NameNode/NN) 对应 N个Slaves(DataNode/NN)2.一个文件会被拆分成多个块(Block)默认:128M例: 130M ==> ...

随机推荐

  1. JVM(五):JVM模型与GC

    确定垃圾 引用计数(存在循环引用问题) 根可达算法 常见的垃圾回收算法 标记清除算法-位置不连续,产生碎片 拷贝算法- 没有碎片,浪费空间 标记压缩-没有碎片,效率偏低(多线程需要进行线程同步,单线程 ...

  2. 2017-18-2 B2B实验+扩充

     B2B模拟实验 [实验目的] 1.掌握B2B中供应商的供求信息发布.阿里商铺开设和订单交易等过程. 2.掌握B2B中采购商的采购信息的发布.交易洽谈.网上支付和收货等过程. [实验条件] 1.个人计 ...

  3. rs232转网络

    rs232转网络 rs232转网络ZLAN5103可以实现RS232/485/422和TCP/IP之间进行透明数据转发.方便地使得串口设备连接到以太网和Internet,实现串口设备的网络化升级.支持 ...

  4. 网络最大流Dinic

    1.什么是网络最大流 形象的来说,网络最大流其实就是这样一个生活化的问题:现在有一个由许多水管组成的水流系统,每一根管道都有自己的最大通过水流限制(流量),超过这个限制水管会爆(你麻麻就会来找你喝茶q ...

  5. 使用python编写正逆序乘法表

    # 99乘法表 # 顺序 for i in range(1,10): n = 1 while n <= i: print('{}x{}={}'.format(n,i,n*i),end=' ') ...

  6. windows 快速安装Python3.7.2

    1.官方下载地址:https://www.python.org/downloads/release/python-372/ 其他地址:http://www.uzzf.com/soft/449550.h ...

  7. lumen容器模仿

    <?php class Container { private $bindings = []; private $instances = []; public function getClosu ...

  8. php 注册器模式 工厂模式

    <?php /** * 注册器模式 * 全局共享和交换对象 */ class Register { public static $objects; // 定义全局数组 // 保存对象到全局数组 ...

  9. 第一章 数据库管理员(DBA)

    一.DBA的工作 1.初级:mysql基础安装.搭建 2.中级:数据库管理员DBA 1)用户管理 1.用户的权限2.用户可以操作的库或者表3.用户名和来源的主机4.用户的密码​grant all on ...

  10. git永久保存账号密码,免去git重复输入账号密码操作

    这是我刚刚遇到的问题,每次操git操作都要输入用户名和密码,网上百度了下搜到了方法解决了 方法一:(快捷简单) 直接在git bash 中执行命令:git config --global creden ...