1. 应用库 Spark SQL
(1)SparkSql概念简介:
spark sql是为了处理结构化数据的一个spark 模块。不同于spark rdd的基本API,spark sql接口更多关于数据结构本身与执行计划等更多信息。在spark内部,sql sql利用这些信息去更好地进行优化。
(2)Spark SQL的特点:
1、支持多种数据源:Hive、RDD、Parquet、JSON、 JDBC 等。
2、多种性能优化技术:in-memory columnar storage、byte-code generation、cost model动态评估等。
3、组件扩展性:对于 sql 的语法解析器、分析器以及优化器,用户都可以自己重新开发,并且动态扩展。
(3)Spark SQL的代码实现方式:
有如下几种方式执行spark sql:SQL,DataFramesAPI与Datasets API。这些之前已经介绍。
(4)Spark SQL的起始点:SQLContext:
spark sql所有功能的入口是SQLContext类,或者SQLContext的子类。为了创建一个基本的SQLContext,需要一个SparkContext。核心代码如下:
// 得到spark的上下文
JavaSparkContext jsc = new JavaSparkContext(sparkConf);
// 通过spark的基础上下文得到sparksql的上下文
SQLContext sqlContext = new SQLContext(jsc);
2. Spark SQL的Java风格的代码案例
案例介绍:
读取一个存储在 hdfs 中的json文件,通过Spark SQL的dataframe操作,读取文件内容,并注册一个临时的表,基于这个临时表,利用spark sql的DataFrame对临时表进行sql操作,并将sql的结果打印在控制台上。
编码步骤:
1) 在linux上创建一个json文件people.json,文件内容如下:
{
“people”: [
{ “name”: “shu1”, “age”:11 },
{ “name”: “shu2”, “age”:22 },
{ “name”: “shu3”, “age”:33 }
]
}
2)将文件上传到hdfs上,切换到hdfs的bin目录下利用以下命令:
hadoop fs –put 本地文件位置 hdfs的目录
3)创建工程sparkst,将工程的jdk置为1.8,并且引入如下jar包:
spark-assembly-1.6.2-hadoop2.6.0.jar
此包可以在spark的安装目录的lib子目录下找到,找到后引入到eclipse中。
4)建立包com.gongyunit.sparkst
5)在该包下创建类TestSparkSql,具体代码如下:
6) 将sparkst工程打成jar包,上传到spark所在的服务器的某一目录下,这里以在spark的安装目录的code子目录下为例。
7)然后执行如下命令,执行该jar包:
spark-submit –master spark:// ip :7077 –executor-memory 500m –class com.gongyunit.sparkst. TestSparkSql ./code/sparkst.jar hdfs:// ip :9000/spark/people.json
补充:实际操作是要讲ip换成你的实际spark的所在ip地址