spark sql系列--基本操作
·
spark sql产生
spark sql未出现前,hive以其对sql的完美支持成为数据仓库的主流方案。但是由于hive的任务最终都会转化未mapreduce任务,因此它的查询性能一致备受诟病。
后来,伯克利实验室的开发人员开发了spark sql组件。
spark sql 组件在兼容hive的同时,能成倍提升处理数据的效率,并可与spark其他组件完美兼容。
DataFrame,DataSet
DataFrame和DataSet与Rdd类似,spark sql中通过使用DataFrame与DataSet提供的各种算子完成计算任务。
DataFrame 也是一个分布式数据容器。然而 DataFrame 更像传统数据库的二维
表格,除了数据以外,还记录数据的结构信息,即 schema。

spark 2.x中DataFrame用DataSet类型表示。
type DataFrame = Dataset[Row]
Dataset除了具有DataFrame的所有特性,还具有面向对象的特性。Dataset中的类型支持自定义。
案例
下面一个简单的案例演示spark sql的基本使用,读取json文件并输出。
Basic.java
public class Basic {
public static void main(String[] args) {
SparkConf sparkConf = new SparkConf();
sparkConf.setAppName("sparksql basic");
sparkConf.setMaster("local[*]");
SparkSession.Builder builder = SparkSession.builder();
builder.config(sparkConf);
SparkSession sparkSession = builder.getOrCreate();
Dataset<Row> dataset = sparkSession.read().json("input/people.json");
dataset.printSchema();
dataset.show();
dataset.createOrReplaceTempView("people");
Dataset result = sparkSession.sql("select * from people");
result.show();
}
}
people.json
{"name": "zhangsan", "age": 20}
{"name": "lisi", "age": 23}
{"name": "wangwu", "age": 40}
{"name": "zhaoliu", "age": 70}
pom.xml
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>2.3.0</version>
</dependency>
更多推荐
所有评论(0)