大数据开发技术之SparkSQL的多种使

SparkSQL支持多种数据源,如JDBC、HDFS、HBase。它的内部组件,如SQL的语法解析器、分析器等支持重定义进行扩展,能更好的满足不同的业务场景。与SparkCore无缝集成,提供了DataSet/DataFrame的可编程抽象数据模型,并且可被视为一个分布式的SQL查询引擎。

DataSet/DataFrame

DataSet/DataFrame都是SparkSQL提供的分布式数据集,相对于RDD而言,除了记录数据以外,还记录表的schema信息。

DataFrame是DataSet以命名列方式组织的分布式数据集,类似于RDBMS中的表,或者R和Python中的dataframe。DataFrameAPI支持Scala、Java、Python、R。在ScalaAPI中,DataFrame变成类型为Row的Dataset:

typeDataFrame=Dataset[Row]。

DataFrame在编译期不进行数据中字段的类型检查,在运行期进行检查。但DataSet则与之相反,因为它是强类型的。此外,二者都是使用catalyst进行sql的解析和优化。为了方便,以下统一使用DataSet统称。

DataSet创建

DataSet通常通过加载外部数据或通过RDD转化创建。

1.加载外部数据

以加载json和mysql为例:

valds=sparkSession.read.json(/路径/people.json)

valds=sparkSession.read.format(jdbc)

.options(Map(url-jdbc:mysql://ip:port/db,

driver-


转载请注明:http://www.aierlanlan.com/cyrz/1821.html