Apache Spark提供了强大的API,以便使开发者为使用复杂的分析成为了可能。通过引入SparkSQL,让开发者可以使用这些高级API接口来从事结构化数据的工作(例如数据库表,JSON文件),并提供面向对象使用RDD的API,开发只需要调用相关 的方法便可使用spark来进行数据的存储与计算。那么Spark1.6带给我们了些什么牛逼的东西呢? 额。。。

Spark1.6提供了关于DateSets的API,这将是Spark在以后的版本中的一个发展趋势,就如同DateFrame,DateSets提供了一个有利于Spark Catalyst optimizer 以及数据字段查询的分析优化,并支持更加快速的内存编码。并且数据集扩展了编译时的类型安全检查机制,可以更好地在程序运行前就检查错误。

  DataSets是一个强类型的、不可变的对象集合,DataSets的API核心是一个新的编码器,改编码器的作用是将JVM的对象与表结构进行转换。使其可以操作序列化的数据及提高了内存的利用率。同时,用户在使用时,发现与一般的RDD的API极其相似,提供了很多相同的功能转换。如下代码,进行文本中单词的拆分。

RDDs:

val lines = sc.textFile("/wikipedia")
val words = lines
.flatMap(_.split(" "))
.filter(_ != "")

DataSets:

val lines = sqlContext.read.text("/wikipedia").as[String]
val words = lines
.flatMap(_.split(" "))
.filter(_ != "")

同时DataSets也支持聚合操作,比如计算每个单词的出现次数:

RDDs:

val counts = words
.groupBy(_.toLowerCase)
.map(w => (w._1, w._2.size))

DataSets:

val counts = words
.groupBy(_.toLowerCase)
.count()

通过执行发现DataSets的执行速度要比原生的RDD快很多。同时,如果使用RDD需要开发人员自己去优化并行算法,或者书写方式来达到DataSets的效果。

同时,DataSets API的另一个优势在于减少内存的使用量。Spark能够解析在DataSets中结构化的数据,并在内存中优化结构,将DataSets中的数据缓存起来。同比原生的RDD,要节省相当多的内存空间。

Spark1.6 DataSets简介的更多相关文章

  1. Spark入门实战系列--1.Spark及其生态圈简介

    [注]该系列文章以及使用到安装包/测试数据 可以在<倾情大奉送--Spark入门实战系列>获取 .简介 1.1 Spark简介 年6月进入Apache成为孵化项目,8个月后成为Apache ...

  2. Spark之 spark简介、生态圈详解

    来源:http://www.cnblogs.com/shishanyuan/p/4700615.html 1.简介 1.1 Spark简介Spark是加州大学伯克利分校AMP实验室(Algorithm ...

  3. (一)Spark简介-Java&Python版Spark

    Spark简介 视频教程: 1.优酷 2.YouTube 简介: Spark是加州大学伯克利分校AMP实验室,开发的通用内存并行计算框架.Spark在2013年6月进入Apache成为孵化项目,8个月 ...

  4. Spark 官方文档(5)——Spark SQL,DataFrames和Datasets 指南

    Spark版本:1.6.2 概览 Spark SQL用于处理结构化数据,与Spark RDD API不同,它提供更多关于数据结构信息和计算任务运行信息的接口,Spark SQL内部使用这些额外的信息完 ...

  5. PageRank算法简介及Map-Reduce实现

    PageRank对网页排名的算法,曾是Google发家致富的法宝.以前虽然有实验过,但理解还是不透彻,这几天又看了一下,这里总结一下PageRank算法的基本原理. 一.什么是pagerank Pag ...

  6. Apache Spark-1.0.1集群搭建

    欢迎经验交流!本文Blog地址:http://www.cnblogs.com/fesh/p/3866791.html Apache Spark   a fast and general engine ...

  7. [转]SRTM、ASTER GDEM等全球数字高程数据(DEM)下载方式简介

    之前写过一篇短文对比过几种数字高程数据的区别:5种全球高程数据对比,这篇文章简要介绍下如何下载这些数据.       1.DLR的数字高程数据.该数据也是SRTM(shuttle radar topo ...

  8. 部分GDAL工具功能简介

    主要转自http://blog.csdn.net/liminlu0314?viewmode=contents 部分GDAL工具功能简介 gdalinfo.exe 显示GDAL支持的各种栅格文件的信息. ...

  9. Cloudera Development Kit(CDK) 简介

    Cloudera Development Kit(CDK) 简介 guibin.beijing@gmail.com 2013.07.02 CDK简介 CDK(Cloudera Development ...

随机推荐

  1. leetcode 117 Populating Next Right Pointers in Each Node II ----- java

    Follow up for problem "Populating Next Right Pointers in Each Node". What if the given tre ...

  2. 网站后台的lnmp启动与重启

    网站建立时间很长了,经常挂掉,又没有其他技术人员带.只好自己摸索着修复. 到今天网站已经挂掉了一个礼拜.请求各路大神无果后决定自己修复. 首先出现的是502,网关错误. 1.上阿里云服务用户中心重新启 ...

  3. mybatis 批量插入和where条件使用

    <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-/ ...

  4. {好文备份}SQL索引一步到位

    SQL索引一步到位(此文章为"数据库性能优化二:数据库表优化"附属文章之一)   SQL索引在数据库优化中占有一个非常大的比例, 一个好的索引的设计,可以让你的效率提高几十甚至几百 ...

  5. noip2011普及组——统计单词数

    统计单词数 时间限制:1 s 内存限制:128MB [问题描述]一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数.现在,请你编程实 ...

  6. wikioi 1475 m进制转十进制

    /*===================================== 1475 m进制转十进制 题目描述 Description 将m进制数n转化成一个十进制数 m<=16 题目保证转 ...

  7. android 添加依赖的库文件

    Notpad: 2016-3-16: 1.android 添加依赖的库文件 右键自己的项目 -> properties ->android ->在Library处点击add -> ...

  8. 2 TKinter绑定事件

    通过command属性给button绑定事件 目的:点击一下按扭,在窗口中出现一行字 第一种方法(command): #!/usr/bin/env python # _*_ coding:utf-8 ...

  9. fastjson生成和解析json数据

    本文讲解2点: 1. fastjson生成和解析json数据 (举例:4种常用类型:JavaBean,List<JavaBean>,List<String>,List<M ...

  10. 【Reporting Services 报表开发】— 表达式

    一.常用的SSRS原始函数可以打开文本框的表达式中看到,如图1 图1 如下为SSRS中设计报表时常用的运算函数: 运算符/函数 说明 + 前后位数字则为加法,前后为字符串则为链接符号 - 数值减法 * ...