SparkSQL(Spark-1.4.0)实战系列(一)——DataFrames基础

简介: 主要内容本教程中所有例子跑在Spark-1.4.0集群上DataFrames简介DataFrame基本操作实战DataFrames简介本文部分内容译自https://databricks.com/blog/2015/02/17/introducing-dataframes-in-spark-for-large-scale-data-science.html

主要内容

本教程中所有例子跑在Spark-1.4.0集群上

  1. DataFrames简介
  2. DataFrame基本操作实战

DataFrames简介

本文部分内容译自https://databricks.com/blog/2015/02/17/introducing-dataframes-in-spark-for-large-scale-data-science.html

DataFrames在Spark-1.3.0中引入,主要解决使用Spark RDD API使用的门槛,使熟悉R语言等的数据分析师能够快速上手Spark下的数据分析工作,极大地扩大了Spark使用者的数量,由于DataFrames脱胎自SchemaRDD,因此它天然适用于分布式大数据场景。相信在不久的将来,Spark将是大数据分析的终极归宿。

在Spark中,DataFrame是一种以RDD为基础的分布式数据集,与传统RDBMS的表结构类似。与一般的RDD不同的是,DataFrame带有schema元信息,即DataFrame所表示的表数据集的每一列都带有名称和类型,它对于数据的内部结构具有很强的描述能力。因此Spark SQL可以对藏于DataFrame背后的数据源以及作用于DataFrame之上的变换进行了针对性的优化,最终达到大幅提升运行时效率。

DataFrames具有如下特点:

  1. Ability to scale from kilobytes of data on a single laptop to petabytes on a large cluster(支持单机KB级到集群PB级的数据处理)
  2. Support for a wide array of data formats and storage systems(支持多种数据格式和存储系统,如图所示)
  3. State-of-the-art optimization and code generation through the Spark SQL Catalyst optimizer(通过Spark SQL Catalyst优化器可以进行高效的代码生成和优化)
  4. Seamless integration with all big data tooling and infrastructure via Spark(能够无缝集成所有的大数据处理工具)
  5. APIs for Python, Java, Scala, and R (in development via SparkR)(提供Python, Java, Scala, R语言API)

这里写图片描述

DataFrames实战

假设Spark-1.4.0集群已经搭建好了,搭建方法见本人另一篇文章,Spark-1.4.0集群搭建http://blog.csdn.net/lovehuangjiaju/article/details/46883973

在spark安装目录中执行root@sparkmaster:/hadoopLearning/spark-1.4.0-bin-hadoop2.4# bin/spark-shell ,在Spark-1.4.0中,spark-shell除了自动创建SparkContext实例sc外,还会自动创建SQLContext实例sqlContext
这里写图片描述

1 上传测试数据到hdfs上。本实验数据取自http://blog.csdn.net/bluejoe2000/article/details/41247857
中的sparkSQL_data.zip,关于数据的描述可以参考对应博客中的文章,将sparkSQL_data.zip上传到SparkMaster,然后解决到根目录,利用hadoop fs -put /data / 进行文件上传,上传后的结果如下图:
这里写图片描述

2 从HDFS文件创建DataFrame,并进行相关操作

//从HDFS上创建DataFrame
val df = sqlContext.read.json("/data/people.json")

这里写图片描述

从中可以看到DataFrame是带类型的

// 显示DataFrame的内容
df.show()

这里写图片描述

//打印DataFrame的Schema信息
df.printSchema()

这里写图片描述

//选择名称列并显示
df.select("name").show()

这里写图片描述

//过滤数据
df.filter(df("age") > 21).show()

这里写图片描述

//分组计数
df.groupBy("age").count().show()

这里写图片描述

3 注册成表,并进行SparkSQL操作

//将DataFrame注册成表
df.registerTempTable("people")
//利用sql方法进行SparkSQL操作
val teenagers = sqlContext.sql("SELECT name, age FROM people WHERE age >= 13 AND age <= 19")
//将返回结果看作是数据库操作的一行,(0)表示第一列,依次类推
teenagers.map(t => "Name: " + t(0)).collect().foreach(println)

这里写图片描述

//通过域的名称获取信息,结果同teenagers.map(t => "Name: " + t(0)).collect().foreach(println)
teenagers.map(t => "Name: " + t.getAs[String]("name")).collect().foreach(println)
//将结果以Map的形式返回
teenagers.map(_.getValuesMap[Any](List("name", "age"))).collect().foreach(println)

这里写图片描述

这是本节关于DataFrames的基础操作,后期我们将对DataFrames内部原理、Schema及相关API的详细使用进行深入介绍。

获取更多内容可以关注公众微信号 ScalaLearning

这里写图片描述

目录
相关文章
|
6月前
|
设计模式 SQL 分布式计算
Spark Day06:Spark Core之Spark 内核调度和SparkSQL快速入门
Spark Day06:Spark Core之Spark 内核调度和SparkSQL快速入门
73 0
|
6月前
|
SQL 分布式计算 API
Spark学习------SparkSQL(概述、编程、数据的加载和保存)
Spark学习------SparkSQL(概述、编程、数据的加载和保存)
146 2
|
3天前
|
分布式计算 大数据 Apache
ClickHouse与大数据生态集成:Spark & Flink 实战
【10月更文挑战第26天】在当今这个数据爆炸的时代,能够高效地处理和分析海量数据成为了企业和组织提升竞争力的关键。作为一款高性能的列式数据库系统,ClickHouse 在大数据分析领域展现出了卓越的能力。然而,为了充分利用ClickHouse的优势,将其与现有的大数据处理框架(如Apache Spark和Apache Flink)进行集成变得尤为重要。本文将从我个人的角度出发,探讨如何通过这些技术的结合,实现对大规模数据的实时处理和分析。
17 2
ClickHouse与大数据生态集成:Spark & Flink 实战
|
25天前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
37 1
|
25天前
|
SQL 分布式计算 大数据
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(一)
34 0
|
25天前
|
SQL 分布式计算 算法
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
大数据-97 Spark 集群 SparkSQL 原理详细解析 Broadcast Shuffle SQL解析过程(二)
62 0
|
25天前
|
SQL 分布式计算 Java
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
大数据-96 Spark 集群 SparkSQL Scala编写SQL操作SparkSQL的数据源:JSON、CSV、JDBC、Hive
26 0
|
25天前
|
存储 SQL 分布式计算
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(一)
36 0
|
25天前
|
SQL 分布式计算 大数据
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
大数据-94 Spark 集群 SQL DataFrame & DataSet & RDD 创建与相互转换 SparkSQL
36 0
|
25天前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
34 0