Spark SQL允许大家在Python、Java以及Scala中使用数据帧;利用多种结构化格式读取并写入数据;通过SQL进行大数据查询。

Spark SQL属于Spark用于处理结构化与半结构化数据的接口。结构化数据是指那些拥有一定模式的数据,包括JSON、Hive Tables以及Parquet。模式意味着每条记录都拥有一套已知字段组。半结构化数据则代表着模式与数据之间不存在明确的区分。

Spark SQL提供三种主要功能以使用结构化及半结构化数据:

1. 在Python、Java与Scala中提供DataFrame抽象以简化结构化数据集的处理方式。DataFrame类似于关系数据库中的表。

2. 它能够对多种结构化格式进行数据读取及写入(例如JSON、Hive Tables以及Parquet)。

3. 允许大家利用SQL进行数据查询,适用范围包括Spark程序之内以及通过标准数据库连接器(JDBC/ODBC)接入Spark SQL的外部工具,例如Tableau等商务智能工具。

链接

将Spark SQL纳入应用,需要提供额外的库关联性。Spark SQL在构建中可选择支持或不支持Apache Hive。在以二进制方式下载Spark时,其默认构建为Hive支持模式。

在应用中使用Spark SQL

Spark SQL最适合用于Spark应用之内。通过这种方式,我们能够轻松将数据加载与数据查询进行结合,同时将其与Python、Java或者Scala协作使用。

基本查询示例

要查询一套表,我们需要在HiveContext或者SQLContext上调用sql()方法。

Scala代码示例:从JSON加载客户数据:

val customers = sqlContext.jsonFile("customers.json") customers.registerTempTable("customers") val firstCityState = sqlContext.sql("SELECT first_name, address.city, address.state FROM customers LIMIT 10")

DataFrames

DataFrames类似于关系数据库中的表。DataFrame事实上属于Row对象的一条RDD。一个DataFrame还能够识别出每一行中的模式。由于能够识别数据模式,DataFrames的数据存储效率比原生RDD更高。

缓存

Spark SQL中的缓存更为高效,这是因为DataFrame能够识别各列的类型。

数据载入及保存

Spark SQL能够原生支持多种结构化数据源,包括Hive表、JSON以及Parquet文件。

另外,Spark SQL还拥有用于集成的DataSource API。DataSource API所能够实现的集成对象包括Avro、Apache HBase、Elasticsearch以及Canssandra等等。完整的支持列表可参阅http://spark-packages.org。

JDBC连接

Spark SQL提供JDBC连接,其能够用于同Tableau等商务智能工具的对接。

用户定义功能(简称UDF)

Spark SQL支持在Python、Java以及Scala当中注册用户定义功能,从而在SQL内部进行调用。这一能力可为SQL带来更多先进功能,帮助用户无需编码即可加以使用。

Spark SQL性能

Spark SQL的额外类型信息使其更为高效,且能够提供远超关系数据库的SQL性能。它还简化了各类条件型聚合操作,包括计算多个列的数值总和。

性能调节选项

Spark SQL当中提供多种不同性能调节选项,例如codegen、内存设置、批量大小与压缩编码等等。

总结

在多种数据处理流程当中,Spark SQL与Python、Scala或者Java代码相结合都能够带来便捷而强大的实际效果。另外,Spark SQL亦能够利用模式识别能力充分发挥该引擎的性能优势。

python中spark有什么功能_Spark SQL是什么,提供的主要功能有哪三种?相关推荐

  1. ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数、运输次数、三种不同的车型,预测需要花费的小时数)来预测一个自变量

    ML之MLiR:利用多元线性回归法,从大量数据(csv文件)中提取五个因变量(输入运输任务总里程数.运输次数.三种不同的车型,预测需要花费的小时数)来预测一个自变量 输出结果 代码设计 from nu ...

  2. python调用spark和调用hive_Spark(Hive) SQL数据类型使用详解(Python)

    Spark SQL使用时需要有若干"表"的存在,这些"表"可以来自于Hive,也可以来自"临时表".如果"表"来自于Hi ...

  3. SQL Server 索引基础知识(10)----Join 时的三种算法简介

    我们书写查询语句的时候,Join 参数之前可以是下面三个 { LOOP | MERGE | HASH } JOIN  . 如果不使用,则系统自己分析那种方式快,使用那种方式. 这其实是SQL Serv ...

  4. html中给div设置的属性怎么样才能拿得到_HTML与CSS结合的三种方式:优先级比较...

    所谓实践出真知,只有自己动手去做了,才能得到正确的结论. 首先我们看看三种结合方式: 通过link标签引入外部css文件 通过style标签 通过style属性 很长一段时间我受这个一段话影响:在ht ...

  5. python中组合框_如何从SQL填充组合框数据?使用Python

    (图1)-这是我的简单程序的输出,假设它有5个下拉项来自数据库,但它只显示1个数据,这是数据库的最后一行被读取.在 图1- (图2)-这是我用于loop的代码,我希望它循环通过它并显示来自db的每个数 ...

  6. python如何处理spark上的数据_spark机器学习笔记:(二)用Spark Python进行数据处理和特征提取...

    下面用"|"字符来分隔各行数据.这将生成一个RDD,其中每一个记录对应一个Python列表,各列表由用户ID(user ID).年龄(age).性别(gender).职业(occu ...

  7. python中使用operator.itemgetter()函数实现excel的自定义排序功能

    使用工具为vscode,python预处理csv数据,先将其转化为list,如图 这里是一个[ [x1,x2,x3...],[y1,y2,y3...],... ]格式的嵌套数组,那么如何将其先按第一列 ...

  8. python中formatter的用法_sql-formatter 格式化sql

    [TOC] >[github](https://github.com/jdorn/sql-formatter/) ## 安装 `composer require jdorn/sql-format ...

  9. python中如何创建一个空列表_Python学习笔记(1):列表的四种创建方法

    我的电脑安装的是Anaconda 3开源的Python发行版本,其中是集合3.6版本的Python与可视化编程工具采用的是Spyder. 打开Spyder可视化工具,新建一个空白文件,做好备注为&qu ...

最新文章

  1. cc arm linux gcc,(80分请教):armcc 与 arm-elf-gcc的区别?
  2. 「情报局21」2019 AI 进入新算力时代
  3. Python 之excle的读写
  4. 级联分类器训练及其参数的含义
  5. java中的图形界面编辑界面_第58节:Java中的图形界面编程-GUI
  6. 浅析HTML、CSS、JavaScript之间的联系与区别
  7. 怎样设计访谈提纲_论访谈提纲的设计
  8. spring cloud微服务_年后进大厂,必备这份微服务面试题:Dubbo+SpringBoot+Cloud
  9. while0表示什么意思_什么是意思表示,有哪些形式?
  10. navicat 结合快捷键
  11. Web前端开发基础三剑客学习知识分享
  12. 修改Chrome的User Agent的方法 真实有效
  13. 网易云音乐自建服务器,自建私有云音乐服务–Subsonic
  14. Java中解密微信加密数据工具类
  15. 思科Packet Tracer基础使用教程
  16. 结构化分析和面向对象分析的区别 例子_淘宝客佣金是什么意思?跟淘宝客服务费有什么区别?-【邯郸seo】...
  17. JavaScript的优势和劣势
  18. 开热点给电脑消耗大吗_电脑连热点流量消耗大吗
  19. Android亮度自动调节
  20. Zero-shot Learning零样本学习 论文阅读(五)——DeViSE:A Deep Visual-Semantic Embedding Model

热门文章

  1. oracle 增加间隔分区,oracle分区表之间隔分区(oracle 11g) - 漫兮网
  2. mallco动态分配_malloc动态分配的内存的生存周期是多少?
  3. export mysql home_mysql的Linux下安装笔记
  4. WordPress 获取当前页面 ID 的几大方法
  5. 【 Grey Hack 】万金油脚本:常见端口获取shell
  6. do while的使用
  7. TCP选项:TCP_NODELAY和TCP_CORK
  8. iOS iPhone SDK 包含哪些东西?
  9. Qt Creator 使用技巧
  10. React开发(237):dva概念2state