Spark修炼之道(进阶篇)——Spark入门到精通:第八节 Spark SQL与DataFrame(一)

  • 时间:
  • 浏览:1

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

Spark SQL是Spark的五大核心模块之一,用于在Spark平台之上处理型态化数据,利用Spark SQL可不也能构建大数据平台上的数据仓库,它具有如下特点:

(1)也能无缝地将SQL一段话集成到Spark进程运行运行当中



(2)统一的数据访问办法

DataFrames and SQL provide a common way to access a variety of data sources, including Hive, Avro, Parquet, ORC, JSON, and JDBC. You can even join data across these sources.



(3) 兼容Hive



(4) 可采用JDBC or ODBC连接



具体见:http://spark.apache.org/sql/

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之上的变换进行了针对性的优化,最终达到大幅提升运行时下行速率 。

将people.json上传到HDFS上,放置在/data目录下,people.json文件内容如下:

本节每项内容来自:http://spark.apache.org/docs/latest/sql-programming-guide.html#dataframes

DataFrames具有如下特点:

有很久json文件涵盖很久包括了列名称的信息,有很久它可不也能直接创建DataFrame

(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)

关于Spark SQL的运行原理可参见:http://blog.csdn.net/book_mmicky/article/details/399564009,文章写得非常好 ,这里不再赘述,在此向作者致敬