Spark Sql,Dataframe和数据集指南

概述

  Spark SQL是一个spark模块,主要用于结构化数据的处理。不像基础的spark RDD的API那么抽象,该接口能够对数据和数据的计算提供更多的信息。Spark SQL使用这些额外的信息来增加额外的优化。有很多种方式来与Spark SQL交互,包括了SQL语句,DataFrame API和Datasets API,因此使用者可以轻松的在这些方式中来进行切换,从而让使用更加方便。

  下面所有的例子都可以在spark-shell,pyspark shell或者sparkR shell中运行。

SQL

Spark SQL的一个功能就是执行常见的SQL指令或者HiveQL指令。spark sql可以从hive中读取数据。对于如何配置这个功能,可以参考下面hive tables(http://spark.apache.org/docs/latest/sql-programming-guide.html#hive-tables)部分,当使用SQL来处理数据时,将会以DataFrame的形式返回数据。你也可以跟SQL交互通过使用命令行的形式或者JDBC或者ODBC,下面会讲到。

DataFrames

一个DataFrame是一个分布式的数据集合,通过列的方式来组织数据。下面的图很好的展示了dataframe和RDD的区别,dataframe中比RDD增加了schema信息,可以对数据的列信息进行描述,从而比RDD使用起来更加高效。


Datasets

一个Dataset是在spark1.6中一个新的实验性的接口,旨在尝试提供RDD的优势,(强类型,能够使用更强大的lambda函数)通过使用spark sql的优化后的执行引擎。一个Dataset可以通过JVM中的objects来进行组织,然后可以通过(map,flatMap,filter等)来进行转化。

开始

出发点:SQLContext

下面的例子都是都是以java的方式来进行说明,其实由于scala也是运行在jvm中,因此在程序中有很多相似之处。

进入Spark SQL的入口函数就是SQLContext,就类似c++中的main函数,创建SQLContext的方式就是通过使用SparkContext

JavaSparkContext sc = ...;
SQLContext sqlContext = new org.apache.spark.sql.SQLContext(sc);

下面这条语句是从sparkcontext中new出一个sqlcontext,sqlcontext是sparkcontext的子方法。

除了基本的SQLContext外,也可以创建一个HiveContext,HiveContext是基础的SQLContext功能的超集,可以对hive表中的数据进行操作。除了可以查询HiveQL外,还可以使用hive的hdfs,还可以从hive表中读取数据。在使用HiveContext,你不用去安装Hive的情况下同样可以使用SQLContext。HiveContext是


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值