Spark SQL之DataFrame的使用

目录

 

一:spark sql作用

二:DataFrame

三:SQLContext与HiveContext

四:创建DataFrame以及常用方法


一:spark sql作用


Spark SQL是Spark中的一个模块
主要用于进行结构化数据的处理,作为分布式的SQL查询引擎

二:DataFrame


1.DataFrame的作用:
是Spark SQL提供的最核心的编程抽象
以列的形式组织的,分布式的数据集合

2.DataFrame可以构建的来源:
(1)结构化的数据文件
(2)Hive中的表
(3)外部的关系型数据库
(4)RDD

三:SQLContext与HiveContext


1.关系:HiveContext是SQLContext的子类

2.功能差异:HiveContext的功能除了包含SQLContext提供的所有功能之外,还包括了额外的专门针对Hive的一些功能。这些额外功能包括:使用HiveQL语法来编写和执行SQL,使用Hive中的UDF函数,从Hive表中读取数据

3.创建SQLContext模式儿
Java版本:
JavaSparkContext sc = ...; 
SQLContext sqlContext = new SQLContext(sc);

Scala版本:
val sc: SparkContext = ... 
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._

四:创建DataFrame以及常用方法


1.常用方法
show
printschema
select
col
plus
filter
gt 
groupby
count

2.特点
(1)类似于sql的操作模式儿,只是封装成方法去调用而已
(2)它是以列为对象单位(而不是以行)

3.代码
      SparkConf conf = new SparkConf().setAppName("DataFrameOperation");
      JavaSparkContext sc = new JavaSparkContext(conf);
      SQLContext sqlContext = new SQLContext(sc);
      
      /*
       * {"id":1, "name":"leo", "age":18}
         {"id":2, "name":"jack", "age":19}
         {"id":3, "name":"marry", "age":17}
       */
      DataFrame df = sqlContext.read().json("");
      
        // 打印DataFrame中所有的数据(select * from ...)
           df.show();
           // 打印DataFrame的元数据(Schema)
           df.printSchema();
           // 查询某列所有的数据
           df.select("name").show();  
           // 查询某几列所有的数据,并对列进行计算
           df.select(df.col("name"), df.col("age").plus(1)).show();
           // 根据某一列的值进行过滤
           df.filter(df.col("age").gt(18)).show();
           // 根据某一列进行分组,然后进行聚合
           df.groupBy(df.col("age")).count().show();

需要创建目录

你可能感兴趣的:(#,Spark,SQL)