数据处理

spark技术热点问题互动问答2

那年仲夏 提交于 2019-12-24 15:33:11
决胜云计算大数据时代” Spark亚太研究院100期公益大讲堂 【第3期互动问答分享】 Q1 : groupbykey是排好序的吗?分组排序怎么实现? groupByKey在一个由(K,V)对组成的数据集上调用,返回一个(K,Seq[V])对的数据集,所以是没有排序的; 要想分组排序,首先要使用groupByKey完成分组功能,然后使用sortWith这个函数对指完成排序实现; 完整代码如下所示: spark.textFile(...).groupByKey().map{p => val sortArray = p._2.sortWith(_ < _) // 排序 (p._1, sortArray) } Q2 :spark 会替代Hadoop 吗? Hadoop在云计算大数据发展的早期做出了卓越的贡献,其MapReduce模型极大的简化了海量数据的分析。随着大数据多重处理例如迭代计算、机器学习、图计算等和低延迟交互式查询的需求爆发式的增长,Hadoop在架构的先天缓慢性导致了其无法满足人们在处理大数据时候的复杂计算和快速响应,Spark应运而生。 Hadoop的HDFS已经成为大数据存储的实施标准,例如淘宝内部有多带大数据处理系统,但是存储系统统一采用HDFS,其HDFS集群规模超过5000台,现在的Spark一般情况下都是从HDFS上获取数据并把计算后的数据交给HDFS。

Spark sql 简单使用

对着背影说爱祢 提交于 2019-12-24 15:32:07
一、认识Spark sql 1、什么是Sparksql? spark sql是spark的一个模块,主要用于进行结构化数据的处理,它提供的最核心抽象就是DataFrame。 2、SparkSQL的作用? 提供一个编程抽象(DataFrame),并且作为分布式SQL查询引擎 DataFrame:它可以根据很多源进行构建,包括:结构化的数据文件、hive中的表,外部的关系型数据库、以及RDD 3、运行原理 将SparkSQL转化为RDD,然后提交到集群执行 4、特点 容易整合、统一的数据访问方式、兼容Hive、标准的数据连接 5、SparkSession SparkSession是Spark 2.0引如的新概念。SparkSession为用户提供了统一的切入点,来让用户学习spark的各项功能。   在spark的早期版本中,SparkContext是spark的主要切入点,由于RDD是主要的API,我们通过sparkcontext来创建和操作RDD。对于每个其他的API,我们需要使用不同的context。例如,对于Streming,我们需要使用StreamingContext;对于sql,使用sqlContext;对于Hive,使用hiveContext。但是随着DataSet和DataFrame的API逐渐成为标准的API,就需要为他们建立接入点。所以在spark2.0中

Spark(十二)SparkSQL简单使用

谁说胖子不能爱 提交于 2019-12-24 15:31:49
一、SparkSQL的进化之路 1.0以前: Shark 1.1.x开始:SparkSQL(只是测试性的) SQL 1.3.x: SparkSQL(正式版本)+Dataframe 1.5.x: SparkSQL 钨丝计划 1.6.x: SparkSQL+DataFrame+DataSet(测试版本) 2.x: SparkSQL+DataFrame+DataSet(正式版本) SparkSQL:还有其他的优化 StructuredStreaming(DataSet) Spark on Hive和Hive on Spark Spark on Hive: Hive只作为储存角色, Spark负责sql解析优化,执行。 Hive on Spark: Hive 即作为存储又 负责sql的解析优化,Spark负责执行。 二、认识SparkSQL 2.1 什么是SparkSQL? spark SQL是spark的一个模块,主要用于进行结构化数据的处理。它提供的最核心的编程抽象就是DataFrame。 2.2 SparkSQL的作用 提供一个编程抽象(DataFrame) 并且作为分布式 SQL 查询引擎 DataFrame:它可以根据很多源进行构建,包括: 结构化的数据文件,hive中的表,外部的关系型数据库,以及RDD 2.3 运行原理 将 Spark SQL 转化为 RDD,

有了Hadoop MapReduce, 为什么还要Spark?

只愿长相守 提交于 2019-12-24 15:31:33
a. 由于MapReduce的shuffle过程需写磁盘,比较影响性能;而Spark利用RDD技术,计算在内存中进行. b. MapReduce计算框架(API)比较局限, 而Spark则是具备灵活性的并行计算框架. c. 再说说Spark API方面- Scala: Scalable Language, 据说是进行并行计算的最好的语言. 与Java相比,极大的减少代码量. From http://coderzhang.com/%e5%85%b3%e4%ba%8e%e7%bc%96%e7%a8%8b%e8%af%ad%e8%a8%80%e7%9a%84%e4%b8%80%e7%82%b9%e6%80%9d%e8%80%83/scala则是为了适应java程序员的需求,做了很多的变通,当然也是为了拉拢java程序员。 scala的代码写出来可以咋一看跟java代码一样,有很多语法糖来简化java代码的书写复杂度,也很方便的支持了不可变变量。然后就宣称函数式,开发效率高,支持高并发编程。不过我觉得使他受欢迎的并不是这三点,而是可以使java程序员快速上手,已写java的方式写scala。这才是他逐渐流行的关键,写scala对java程序员来说是一件很cool的事情,而且也很容易上手,何乐而不为呢。 再说说流行的java,java应该是在各种语言里比较接近自然语言的一种

Spark SQL基本概念与基本用法

非 Y 不嫁゛ 提交于 2019-12-24 15:31:17
1. Spark SQL概述 1.1 什么是Spark SQL Spark SQL是Spark用来处理结构化数据的一个模块,它提供了两个编程抽象分别叫做DataFrame和DataSet,它们用于作为分布式SQL查询引擎。从下图可以查看RDD、DataFrames与DataSet的关系。 1.2 为什么要学习Spark SQL Hive,它是将Hive SQL转换成MapReduce,然后提交到集群上执行的,大大简化了编写MapReduce程序的复杂性,而且MapReduce这种计算模型执行效率比较慢。类比Hive,Spark SQL,它时将Spark SQL转换成RDD,然后提交到集群上执行,执行效率非常快! 2. DataFrames 2.1 什么是DataFrames 与RDD类似,DataFrame也是一个分布式数据容器。然而DataFrame更像传统数据库的二维表格,除了数据以外,还记录数据的结构信息,即schema。同时,与Hive类似,DataFrame也支持嵌套数据类型(struct、array和map)。从API易用性的角度上看,DataFrame API提供的是一套高层的关系操作,比函数式的RDD API要更加友好,门槛更低。由于与R和Pandas的DataFrame类似,Spark DataFrame很好地继承了传统单机数据分析的开发体验。 2.2

Spark SQL数据源

若如初见. 提交于 2019-12-24 15:31:08
目录 背景 数据源 SparkSession parquet csv json jdbc table 准备table 读取 写入 连接一个已存在的Hive text 格式提前确定 格式在运行时确定 总结 背景 Spark SQL是Spark的一个模块,用于结构化数据的处理。 ++++++++++++++ +++++++++++++++++++++ | SQL | | Dataset API | ++++++++++++++ +++++++++++++++++++++ +++++++++++++++++++++++++++++++++++++ | Spark SQL | +++++++++++++++++++++++++++++++++++++ 使用Spark SQL的方式有2种,可以通过SQL或者Dataset API,这两种使用方式在本文都会涉及。 其中,通过SQL接口使用的方法具体又可分为3种: 在程序中执行 使用命令行 Jdbc/ODBC 这里只会介绍第一种方式。 Spark关于分布式数据集的抽象原本是RDD,Dataset是其升级版本。DataFrame是特殊的Dataset,它限定元素是按照命名的列来组织的,从这一点看相当于关系型数据库中的表。DataFrame等价于Dataset[Row],而且DataFrame是本文内容的核心。 DataFrame支持丰富的数据源:

Spark Streaming学习笔记

巧了我就是萌 提交于 2019-12-24 15:27:02
Spark Streaming 编程学习笔记 简介 spark stream 基于spark 核心API扩展而来,提供了一种具有规模可伸缩、高吞吐、错误恢复的处理实时数据流的流式处理方法。数据来源可以从本地文件,hadoop等接受,可以使用该机函数类似map、reduce、window等函数进行处理。数据结果同样可以进行多种形式的存储。 在spark stream内部,将接收到的实时数据进行切分成不同的数据段,然后处理引擎对一个个的数据快进行处理然后输出相应的结果。 这个地方有点疑问:如果原始数据被切分开,比如说,原始数据是“Hello, my boys", 但是在spark数据接收端对数据块进行切分时,从中间切分开来使"Hello"和", my boys"成为了两个数据块,这内部怎么保证切分永远是合理的?? 上面的流程图中的batches,spark将其抽象成一种数据结构叫做 DStream(discretized stream) ,Dstream既可以有输入的实时数据流创建,也可以由其他的函数对已有的DStream操作后得到。DStream在spark内部就是一系列的RDD的集合。 一个简单的例子 以下的例子是一个简单的wordCount的程序,改程序从TCP端口接收数据,然后统计接受到数据的文字的个数。 import org.apache.spark._ import org

大数据篇[Hadoop]-01

我的梦境 提交于 2019-12-24 14:48:50
如约而至,你们好我是AC,就是啊晨的意思, 今天讲hadoop,是大数据开发工程师必备技术之一 好吧,废话不多说,跟我一起,先入个hadoop的门吧 文章目录 什么是Hadoop? 简单叙述: 发展历史 Hadoop特点 核心组成 HDFS架构概述 一、HDFS简介 二、HDFS组成结构以及各部分作用 1.Client(客户端) 2.NameNode(书的目录) 3.DataNode(实际的内容) 4.Secondary NameNode(辅助NameNode) YARN架构概述 MapReduce架构概述 大数据生态体系(了解知识扩展) 什么是Hadoop? 简单叙述: 为了方便理解简单叙述,关于正式介绍,百度了解即可,我就稍微总结下吧 由Apache基金会所开发的分布式系统基础架构,广泛的概念-hadoop生态圈 架构:项目整体的布局方式 集群:多个机器共同完成一件事 分布式:多个集群做不同的事 集群不一定是分布式,分布式一定是集群 主要解决:海量数据的存储和海量数据的分析计算问题。 发展历史 Lucene–Doug Cutting开创的开源软件,用Java书写代码,实现与Google类似的全文搜索功能,它提供了全文检索引擎的架构,包括完整的查询引擎和索引引擎 2001年年底成为apache基金会的一个子项目 可以说Google是hadoop的思想之源

hadoop入门介绍(一)

ぃ、小莉子 提交于 2019-12-24 09:07:04
hadoop是什么?(一) hadoop发展史 (二) Hadoop三大发行版本(三) Hadoop三大发行版本:Apache、Cloudera、Hortonworks。 Apache版本最原始(最基础)的版本,对于入门学习最好。 Cloudera在大型互联网企业中用的较多。 Hortonworks文档较好。 Apache Hadoop 官网地址:http://hadoop.apache.org/releases.html 下载地址: https://archive.apache.org/dist/hadoop/common/ Cloudera Hadoop 官网地址:https://www.cloudera.com/downloads/cdh/5-10-0.html 下载地址:http://archive-primary.cloudera.com/cdh5/cdh/5/ (1)2008年成立的Cloudera是最早将Hadoop商用的公司,为合作伙伴提供Hadoop的商用解决方案,主要是包括支持、咨询服务、培训。 ( 2 ) 2009 年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司 。Cloudera产品主要为CDH,Cloudera Manager,Cloudera Support (3)CDH是Cloudera的Hadoop发行版

详解HDFS Short Circuit Local Reads

Deadly 提交于 2019-12-24 00:50:20
详解HDFS Short Circuit Local Reads Hadoop的一大基本原则是移动计算的开销要比移动数据的开销小。因此,Hadoop通常是尽量移动计算到拥有数据的节点上。这就使得Hadoop中读取数据的客户端DFSClient和提供数据的Datanode经常是在一个节点上,也就造成了很多“Local Reads”。 最初设计的时候,这种Local Reads和Remote Reads(DFSClient和Datanode不在同一个节点)的处理方式都是一样的,也就是都是先由Datanode读取数据,然后再通过RPC把数据传给DFSClient。这样处理是比较简单的,但是性能会受到一些影响,因为需要Datanode在中间做一次中转。本文将介绍针对这个问题的一些优化。 既然DFSClient和数据是在一个机器上面,那么很自然的想法,就是让DFSClient绕开Datanode自己去读取数据,在具体实现上有如下两种方案。 HDFS-2246 在这个JIRA中,工程师们的想法是既然读取数据DFSClient和数据在同一台机器上,那么Datanode就把数据在文件系统中的路径,从什么地方开始读(offset)和需要读取多少(length)等信息告诉DFSClient,然后DFSClient去打开文件自己读取。想法很好,问题在于配置复杂以及安全问题。 首先是配置问题