*以下内容由《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

  1. # 导入Spark SQL(支持Hive)
  2. from pyspark.sql import HiveContext, Row
  3. # 当不能引入hive依赖时 (不支持Hive)
  4. from pyspark.sql import SQLContext, Row
  5.  
  6. # 在 Python 中创建SQL上下文环境(支持Hive)
  7. hiveCtx = HiveContext(sc)
  8. # 在 Python 中创建SQL上下文环境(不支持Hive)
  9. hiveCtx = SparkContext(sc)

(2) 基本查询

  1. # 例子:在Python中读取并查询推文
  2. # 读取Json文件
  3. input = hiveCtx.jsonFile(inputFile)
  4. # 注册输入的SchemaRDD(将上面读取得到的SchemaRDD放入临时表,应用application退出时会自动删去它)
  5. input.registerTempTable("tweets")
  6. # 依据retweetCount(转发计数)选出推文(执行查询)
  7. 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()自定义函数。

  1. # 例子:Python 版本耳朵字符串长度 UDF
  2. # 写一个求字符串长度的UDF
  3. hiveCtx.registerFunction("strLenPython", lambda x: len(x), IntegerType())
  4. 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. win10 home安装docker快速攻略

    本文适用于win10 Home用户,专业版和企业版直接见官网.win7版本见Docker Toolbox. 安装清单 软件 说明 Docker Desktop Installer 步骤介绍页:http ...

  2. EDI模拟实验

    EDI模拟实验 [实验目的] ⑴.了解EDI报文的格式和特点. ⑵.掌握EDI报文生成和发送流程. [实验条件] ⑴.个人计算机一台,预装Windows XP操作系统和浏览器 ⑵.计算机通过局域网形式 ...

  3. Unix中使用MeteoInfo - Xmanager设置

    通过Xshell等客户端登陆Unix系统运行图形软件(X11)需要有X-server,Xmanager是其中的佼佼者(可惜是商业软件).我通常用Xshell登陆气象局的IBM高性能计算机(AIX系统) ...

  4. 理解 PHP 依赖注入 和 控制反转

    理解 PHP 依赖注入 和 控制反转   要想理解 PHP 依赖注入 和 控制反转 两个概念,就必须搞清楚如下的两个问题: DI -- Dependency Injection 依赖注入 IoC -- ...

  5. Redis Hashes 数据类型简述

    Redis Hashes 是我们日常使用中比较高频的 Redis 数据类型,内部使用 Redis 字典结构存储,底层基于哈希表结构实现. 下面从哈希表节点,哈下表结构,Redis 字典,Redis 字 ...

  6. 分布式协调服务之Zookeeper集群部署

    一.分布式系统概念 在聊Zookeeper之前,我们先来聊聊什么是分布式系统:所谓分布式系统就是一个系统的软件或硬件组件分布在网络中的不同计算机之上,彼此间通过消息传递进行通信和协作的系统:简单讲就是 ...

  7. JavaSE学习笔记04方法、数组

    1.方法 java方法是语句的集合,它们在一起执行一个功能 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 设计方法的原则:一个方法只完成1个功能,这样 ...

  8. C# 面试前的准备_基础知识点的回顾_03

    1.HTTP中Post和Get区别 这忒简单了吧,大家是不是感觉到兴奋了,长舒一口气了,终于出现了一个可以聊上10分钟的问题了. 根据HTTP规范,Get用于信息获取,而且应该是安全的和幂等的. 参数 ...

  9. poj1050 To the Max(降维dp)

    To the Max Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 49351   Accepted: 26142 Desc ...

  10. suse使用镜像源

    创建挂载目录,随便建个目录 mkdir /mnt/cdrom 光盘连上,挂载光盘 mount -t iso9660 /dev/sr0 /mnt/cdrom/#确保挂上了ls看看/mnt/cdrom是否 ...