当前位置: 代码迷 >> SQL >> spark sql 创设dataframes
  详细解决方案

spark sql 创设dataframes

热度:281   发布时间:2016-05-05 09:49:37.0
spark sql 创建dataframes

Table of Contents

  • 1. spark sql
  • 2. SQLContext
    • 2.1. sql context是spark sql的所有功能入口点
    • 2.2. 通过spark context创建sql context
    • 2.3. hive context功能上多于sql context,未来sql context也会增加功能
  • 3. DataFrames
    • 3.1. 功能
    • 3.2. 创建DataFrames
    • 3.3. DSL
      • 3.3.1. 可以指定DataFrames的某列数据

1 spark sql

  • 是spark的一个模块
  • 处理结构化数据
  • 提供了DataFrames作为编程的抽象层
  • 同时也是一个分布式sql查询引擎
  • 可以从hive中读取数据

2 SQLContext

2.1 sql context是spark sql的所有功能入口点

2.2 通过spark context创建sql context

val sc: SparkContext // An existing SparkContext.val sqlContext = new org.apache.spark.sql.SQLContext(sc)

注意,上面的val sc: …其实不需要写,因为启动spark-shell的时候有这么一个提示, 所以直接用就好。

Spark context available as sc.

2.3 hive context功能上多于sql context,未来sql context也会增加功能

不过由于我对hive不感兴趣,不会创建hive context

3 DataFrames

3.1 功能

  • 分布式数据集合
  • 列的方式组织
  • 理解为关系数据库的表
  • 可以从结构化文件,hive表,外部数据库或者RDD构造

3.2 创建DataFrames

通过SQLContext创建DataFrames,可以从外部文件,hive表或者RDD来创建。 为了测试本地文件,启动spark-shell的时候不要用–master连接spark master, 否则会提示找不到本地文件。 而如果想访问hdfs文件,启动spark-shell的时候要用–master。

scala> val sqlContext = new org.apache.spark.sql.SQLContext(sc)sqlContext: org.apache.spark.sql.SQLContext = [email protected]scala> val df = sqlContext.read.json("/home/smile/people.json")df: org.apache.spark.sql.DataFrame = [age: bigint, name: string]scala> df.printSchema()df.printSchema()root |-- age: long (nullable = true) |-- name: string (nullable = true)scala> df.show()df.show()+---+----+|age|name|+---+----+| 38|Dean|+---+----+

3.3 DSL

DataFrames提供了DSL方面对结构化数据进行操作,都是些函数,比如select, printSchema, show, groupBy, filter等。

scala> df.select("name").show()+----+|name|+----+|Dean|+----+

3.3.1 可以指定DataFrames的某列数据

比如:df("column-name") ,还可以用在select中 df.select(df("name")).show(), 结果还是一样,这里只是演示一种用法。 具体请参考官方文档

Author: dean

Created: 2015-11-12 四 23:21

Validate


版权声明:本文为博主原创文章,未经博主允许不得转载。

  相关解决方案