spark sql DataFrame操作
2015-11-04 00:19
627 查看
spark sql DataFrame操作
官网地址(http://spark.apache.org/docs/latest/sql-programming-guide.html)
1、Spark SQL是干什么用的吗?具体包括哪些呢?
2、DataFrame有哪些操作呢?
不多说,先实践后理论
下面分别用Java语言及scala语言实现:
Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。同时Spark SQL还可以作为分布式的SQL查询引擎。Spark SQL最重要的功能之一,就是从Hive中查询数据。
DataFrame,可以理解为是,以列的形式组织的,分布式的数据集合。它其实和关系型数据库中的表非常类似,但是底层做了很多的优化。DataFrame可以通过很多来源进行构建,包括:结构化的数据文件,Hive中的表,外部的关系型数据库,以及RDD。
要使用Spark SQL,首先就得创建一个创建一个SQLContext对象,或者是它的子类的对象,比如HiveContext的对象。
Java版本:
JavaSparkContext sc = ...;
SQLContext sqlContext = new SQLContext(sc);
Scala版本:
val sc: SparkContext = ...
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
除了基本的SQLContext以外,还可以使用它的子类——HiveContext。HiveContext的功能除了包含SQLContext提供的所有功能之外,还包括了额外的专门针对Hive的一些功能。这些额外功能包括:使用HiveQL语法来编写和执行SQL,使用Hive中的UDF函数,从Hive表中读取数据。
要使用HiveContext,就必须预先安装好Hive,SQLContext支持的数据源,HiveContext也同样支持——而不只是支持Hive。对于Spark 1.3.x以上的版本,都推荐使用HiveContext,因为其功能更加丰富和完善。
Spark SQL还支持用spark.sql.dialect参数设置SQL的方言。使用SQLContext的setConf()即可进行设置。对于SQLContext,它只支持“sql”一种方言。对于HiveContext,它默认的方言是“hiveql”。
Java版本
DataFrame df = sqlContext.read().json("hdfs://cloud1:9000/a.json");
df.show();
df.printSchema();
df.select("name").show();
df.select(df.col("name"), df.col("age").plus(1)).show();
df.filter(df.col("age").gt(21)).show();
df.groupBy("age").count().show();
Scala版本
val df = sqlContext.read.json("hdfs://cloud1:9000/a.json")
df.show()
df.printSchema()
df.select("name").show()
df.select(df("name"), df("age") + 1).show()
df.filter(df("age") > 21).show()
df.groupBy("age").count().show()
后面再讲HiveContext!
官网地址(http://spark.apache.org/docs/latest/sql-programming-guide.html)
1、Spark SQL是干什么用的吗?具体包括哪些呢?
2、DataFrame有哪些操作呢?
不多说,先实践后理论
下面分别用Java语言及scala语言实现:
import org.apache.spark.SparkConf import org.apache.spark.SparkContext import org.apache.spark.sql.SQLContext object DataFrameOperation { def main(args: Array[String]): Unit = { val conf = new SparkConf() .setAppName("DataFrameCreate") val sc = new SparkContext(conf) val sqlContext = new SQLContext(sc) val df = sqlContext.read.json("hdfs://cloud1:9000/a.json") df.show() df.printSchema() df.select("name").show() df.select(df("name"), df("age") + 1).show() df.filter(df("age") > 18).show() df.groupBy("age").count().show() } }
import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaSparkContext; import org.apache.spark.sql.DataFrame; import org.apache.spark.sql.SQLContext; public class DataFrameOperation { public static void main(String[] args) { // 创建DataFrame SparkConf conf = new SparkConf() .setAppName("DataFrameCreate"); JavaSparkContext sc = new JavaSparkContext(conf); SQLContext sqlContext = new SQLContext(sc); //DataFrame其实可以看成一张表 DataFrame df = sqlContext.read().json("hdfs://cloud1:9000/a.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(17)).show(); // 根据某一列进行分组,然后进行聚合 df.groupBy(df.col("age")).count().show(); } }
Spark SQL是Spark中的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象,就是DataFrame。同时Spark SQL还可以作为分布式的SQL查询引擎。Spark SQL最重要的功能之一,就是从Hive中查询数据。
DataFrame,可以理解为是,以列的形式组织的,分布式的数据集合。它其实和关系型数据库中的表非常类似,但是底层做了很多的优化。DataFrame可以通过很多来源进行构建,包括:结构化的数据文件,Hive中的表,外部的关系型数据库,以及RDD。
要使用Spark SQL,首先就得创建一个创建一个SQLContext对象,或者是它的子类的对象,比如HiveContext的对象。
Java版本:
JavaSparkContext sc = ...;
SQLContext sqlContext = new SQLContext(sc);
Scala版本:
val sc: SparkContext = ...
val sqlContext = new SQLContext(sc)
import sqlContext.implicits._
除了基本的SQLContext以外,还可以使用它的子类——HiveContext。HiveContext的功能除了包含SQLContext提供的所有功能之外,还包括了额外的专门针对Hive的一些功能。这些额外功能包括:使用HiveQL语法来编写和执行SQL,使用Hive中的UDF函数,从Hive表中读取数据。
要使用HiveContext,就必须预先安装好Hive,SQLContext支持的数据源,HiveContext也同样支持——而不只是支持Hive。对于Spark 1.3.x以上的版本,都推荐使用HiveContext,因为其功能更加丰富和完善。
Spark SQL还支持用spark.sql.dialect参数设置SQL的方言。使用SQLContext的setConf()即可进行设置。对于SQLContext,它只支持“sql”一种方言。对于HiveContext,它默认的方言是“hiveql”。
Java版本
DataFrame df = sqlContext.read().json("hdfs://cloud1:9000/a.json");
df.show();
df.printSchema();
df.select("name").show();
df.select(df.col("name"), df.col("age").plus(1)).show();
df.filter(df.col("age").gt(21)).show();
df.groupBy("age").count().show();
Scala版本
val df = sqlContext.read.json("hdfs://cloud1:9000/a.json")
df.show()
df.printSchema()
df.select("name").show()
df.select(df("name"), df("age") + 1).show()
df.filter(df("age") > 21).show()
df.groupBy("age").count().show()
后面再讲HiveContext!
相关文章推荐
- 日常收集整理SqlServer数据库优化经验和注意事项
- 浅析SQL数据操作语句
- SQL SERVER调用存储过程小结
- 通过两种方式增加从库――不停止mysql服务
- MySQL_CRUD基础语句
- 动态备份SQL-SERVER数据库——SQLDMO
- MySQL 事务的基本概念
- Mysql子查询概念
- mysql连接和联和
- redis 下载地址(window)
- mysql 事务隔离
- mongodb复制集和分片
- oracle rowNum
- 数据库优化
- 子查询(二)子查询
- powerdesigner逆向导出oracle数据库结构显示备注
- 子查询(一)创建表
- Sql Server来龙去脉系列之三 查询过程跟踪
- Oracle合并函数内容
- SQL Server将一列的多行内容拼接成一行的实现方法