您好,欢迎来到12图资源库!分享精神,快乐你我!我们只是素材的搬运工!!
  • 首 页
  • 当前位置:首页 > IT资讯 > 最新资讯 >
    Spark SQL
    时间:2016-06-18 11:49 来源:互联网 作者:admin 浏览:收藏 挑错 推荐 打印


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

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

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

    Spark SQL

    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加载客户数据:

    1. val customers = sqlContext.jsonFile("customers.json")  
    2. customers.registerTempTable("customers")  
    3. 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亦能够利用模式识别能力充分发挥该引擎的性能优势。

    (责任编辑:admin)