08 2019 档案

摘要:一、连接表1、SQL JOIN忘记在哪保存的某位网友的图,先明白SQL JOIN,2、关于笛卡尔积笛卡尔积: 两个集合的乘积重新建student表和teacher表:student表:CREATE TABLE `student` ( `student_id` varchar(50) NOT NULL COMMENT '学生编号', `student_name` varchar(100) ... 阅读全文
posted @ 2019-08-30 17:04 米兰的小铁將 阅读(516) 评论(0) 推荐(0) 编辑
摘要:一、子查询1、使用子查询作为计算字段子查询:嵌套在其他查询中的查询现在有两个表,student表和teacher表创建teacher表,并插入数据:CREATE TABLE `teacher` ( `teacher_id` varchar(255) DEFAULT NULL COMMENT '老师编号', `teacher_name` varchar(255) DEFAULT NULL COM... 阅读全文
posted @ 2019-08-30 10:56 米兰的小铁將 阅读(1114) 评论(0) 推荐(0) 编辑
摘要:一、汇总统计1、聚集函数COUNT() 计算总数SUM() 求和MAX() 最大值MIN() 最小值AVG() 平均值2、聚集函数使用总共有多少名学生?SELECT COUNT(*) FROM student;所有学生的数学成绩总和?SELECT SUM(score) FROM student;所有学生的数学成绩最高分?SELECT... 阅读全文
posted @ 2019-08-29 16:24 米兰的小铁將 阅读(6505) 评论(0) 推荐(0) 编辑
摘要:一、创建新的输出字段1、建表、插数据###CREATE TABLE `t_stock_trans_dtl` ( `trans_id` varchar(100) NOT NULL COMMENT '交易流水号', `stock_name` varchar(20) NOT NULL DEFAULT '' COMMENT '股票名称', `stock_code` varchar(10) NOT N... 阅读全文
posted @ 2019-08-29 11:38 米兰的小铁將 阅读(1880) 评论(0) 推荐(0) 编辑
摘要:一、过滤数据1、使用WHERE子句过滤数据:关键字WHERESELECT 字段列表 FROM 表名 WHERE 过滤条件;过滤条件一般由要过滤的字段、操作符、限定值三部分组成;如: SELECT student_id,student_name FROM student WHERE gender = '男';2、常用操作符3、过滤单个值#age 不等于10SELECT student_id ... 阅读全文
posted @ 2019-08-29 09:47 米兰的小铁將 阅读(1215) 评论(0) 推荐(0) 编辑
摘要:一、操纵表1、表的关键信息2、更新表名更新表名:使用RENAME TABLE关键字。语法如下: RENAME TABLE 旧表名 TO 新表名;比如,生产环境投产前备份teacher表,使用如下语句: RENAME TABLE teacher TO teacher_bak;3、更新字段名更新字段名:使用ALTER TABLE关键字。语法如下: ALTER TABLE 表名 REN... 阅读全文
posted @ 2019-08-28 17:05 米兰的小铁將 阅读(561) 评论(0) 推荐(0) 编辑
摘要:一、建表1、创建表的两种方式*客户端工具 *SQL语句2、使用SQL语句创建表表名和字段名不能使用中文;(一般为字母开头,字母、数字、下划线组成的字符串);CREATE TABLE关键字后跟上表名,字段名在括号中列出且以逗号分隔;最后以分号结尾;不区分大小写,但最好关键字都大写;按一定的规则缩进;每个字段都需要设置数据类型;常用的数据类型有以下几个大类: 字符类 数值类 日期和时... 阅读全文
posted @ 2019-08-28 13:53 米兰的小铁將 阅读(6956) 评论(0) 推荐(0) 编辑
摘要:一、hive分桶 概述 hive 分桶 分桶表是对列值取哈希值的方式,将不同数据放到不同文件中存储。 对于hive中每一个表、分区都可以进一步进行分桶。 由列的哈希值除以桶的个数求余的方式来决定每条数据划分在哪个桶中。 适用场景: 数据抽样( sampling )、map-join 数据抽样: 数据 阅读全文
posted @ 2019-08-27 15:00 米兰的小铁將 阅读(594) 评论(0) 推荐(0) 编辑
摘要:一、重定向正则表达式匹配:* ~ 为区分大小写匹配* ~* 为不区分大小写匹配* !~和!~*分别为区分大小写不匹配及不区分大小写不匹配文件及目录匹配:* -f和!-f用来判断是否存在文件* -d和!-d用来判断是否存在目录* -e和!-e用来判断是否存在文件或目录* -x和!-x用来判断文件是否可执行flag标记:* last 相当于Apache里的[L]标记,表示完成rewrite* brea... 阅读全文
posted @ 2019-08-27 11:29 米兰的小铁將 阅读(9114) 评论(0) 推荐(0) 编辑
摘要:一、Receiver模式1、 receiver模式原理图在SparkStreaming程序运行起来后,Executor中会有receiver tasks接收kafka推送过来的数据。数据会被持久化,默认级别为MEMORY_AND_DISK_SER_2,这个级别也可以修改。receiver task对接收过来的数据进行存储和备份,这个过程会有节点之间的数据传输。备份完成后去zookeeper中更新消... 阅读全文
posted @ 2019-08-23 17:38 米兰的小铁將 阅读(373) 评论(0) 推荐(0) 编辑
摘要:一、kafka各成员 二、分析zookeeper元数据存储 1、创建topic 2、生产、消费 3、进入zookeeper查看 看topic 看consumer 三、leader 均衡机制 四、Kafka生产过程分析 1、写入方式 2、partition(分区) 3、Replication(副本 ) 阅读全文
posted @ 2019-08-23 13:59 米兰的小铁將 阅读(506) 评论(0) 推荐(0) 编辑
摘要:一、关于消息队列消息队列是一种应用间的通信方式,消息就是是指在应用之间传送的数据,它也是进程通信的一种重要的方式。1.消息队列的基本架构producer:消息生产者。broker:消息处理中心。consumer:消息消费者2.消息队列常用场景系统之间的解耦。高并发下的流量消峰(电商抢购活动)。异步通信(串行变并行)。3.消息队列的特点基本上都基于生产者消费者模式。必须保证数据的可靠性传输。4、点对... 阅读全文
posted @ 2019-08-22 14:41 米兰的小铁將 阅读(436) 评论(0) 推荐(0) 编辑
摘要:一、Zookeeper的角色» 领导者(leader),负责进行投票的发起和决议,更新系统状态» 学习者(learner),包括跟随者(follower)和观察者(observer),follower用于接受客户端请求并想客户端返回结果,在选主过程中参与投票» Observer可以接受客户端连接,将写请求转发给leader,但observer不参加投票过程,只同步leader的状态,observe... 阅读全文
posted @ 2019-08-21 18:05 米兰的小铁將 阅读(327) 评论(0) 推荐(0) 编辑
摘要:一、什么是Zookeeper Zookeeper是Google的Chubby一个开源的实现,是一个开源的,为分布式提供协调服务的Apache项目; 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等; Zookeeper从设计模式角度来理解,是一个基于观察者模式设计的 阅读全文
posted @ 2019-08-21 16:46 米兰的小铁將 阅读(225) 评论(0) 推荐(0) 编辑
摘要:一、数据处理原理剖析每隔我们设置的batch interval 的time,就去找ReceiverTracker,将其中的,从上次划分batch的时间,到目前为止的这个batch interval time间隔内的block封装为一个batch;其次,会将这个batch中的数据,去创建为一个初始的RDD,一个batch内,在这段时间封装了几个block,就代表这个batch对应的RDD内会有几个p... 阅读全文
posted @ 2019-08-21 11:34 米兰的小铁將 阅读(481) 评论(0) 推荐(0) 编辑
摘要:一、数据接收原理二、源码分析入口包org.apache.spark.streaming.receiver下ReceiverSupervisorImpl类的onStart()方法### override protected def onStart() { // 这里的blockGenerator很重要,和数据接收有关,其运行在worker的executor端负责数据接收后的一些存取工作,以及配... 阅读全文
posted @ 2019-08-21 11:25 米兰的小铁將 阅读(388) 评论(0) 推荐(0) 编辑
摘要:一、StreamingContext源码分析###入口 org.apache.spark.streaming/StreamingContext.scala/** * 在创建和完成StreamContext的初始化之后,创建了DStreamGraph、JobScheduler等关联组件之后,就会调用StreamContext的socketTextStream等方法, * 来创建输入DStream... 阅读全文
posted @ 2019-08-20 15:31 米兰的小铁將 阅读(440) 评论(0) 推荐(0) 编辑
摘要:一、架构原理深度剖析StreamingContext初始化时,会创建一些内部的关键组件,DStreamGraph,ReceiverTracker,JobGenerator,JobScheduler,DStreamGraph,我们程序中定义很多DStream,中间用很多操作把这些DStream给串起来,这些DStream之间的依赖关系,就是所谓的DStreamGraph,然后调用StreamingC... 阅读全文
posted @ 2019-08-20 14:27 米兰的小铁將 阅读(332) 评论(0) 推荐(0) 编辑
摘要:一、 容错机制1、背景要理解Spark Streaming提供的容错机制,先回忆一下Spark RDD的基础容错语义:1、RDD,Ressilient Distributed Dataset,是不可变的、确定的、可重新计算的、分布式的数据集。每个RDD都会记住确定好的计算操作的血缘关系,(val lines = sc.textFile(hdfs file); val words = lines.f... 阅读全文
posted @ 2019-08-20 13:58 米兰的小铁將 阅读(613) 评论(0) 推荐(0) 编辑
摘要:一、部署应用程序1、流程1、有一个集群资源管理器,比如standalone模式下的Spark集群,Yarn模式下的Yarn集群等。2、打包应用程序为一个jar包。3、为executor配置充足的内存,因为Receiver接受到的数据,是要存储在Executor的内存中的,所以Executor必须配置足够的内存来保存接受到的数据。要注意的是,如果你要执行窗口长度为10分钟的窗口操作,那么Execut... 阅读全文
posted @ 2019-08-19 18:00 米兰的小铁將 阅读(749) 评论(0) 推荐(0) 编辑
摘要:一、缓存与持久化机制与RDD类似,Spark Streaming也可以让开发人员手动控制,将数据流中的数据持久化到内存中。对DStream调用persist()方法,就可以让Spark Streaming自动将该数据流中的所有产生的RDD,都持久化到内存中。如果要对一个DStream多次执行操作,那么,对DStream持久化是非常有用的。因为多次操作,可以共享使用内存中的一份缓存数据。对于基于窗口... 阅读全文
posted @ 2019-08-19 17:46 米兰的小铁將 阅读(589) 评论(0) 推荐(0) 编辑
摘要:一、top3热门商品实时统计案例1、概述Spark Streaming最强大的地方在于,可以与Spark Core、Spark SQL整合使用,之前已经通过transform、foreachRDD等算子看到,如何将DStream中的RDD使用Spark Core执行批处理操作。现在就来看看,如何将DStream中的RDD与Spark SQL结合起来使用。案例:每隔10秒,统计最近60秒的,每个种类... 阅读全文
posted @ 2019-08-19 17:07 米兰的小铁將 阅读(1349) 评论(0) 推荐(0) 编辑
摘要:一、output操作 1、output操作 2、output操作概览 二、foreachRDD 1、foreachRDD详解 2、java案例 创建mysql表 java代码 阅读全文
posted @ 2019-08-19 15:08 米兰的小铁將 阅读(929) 评论(0) 推荐(0) 编辑
摘要:一、window滑动窗口 1、概述 2、window滑动窗口操作 案例:热点搜索词滑动统计,每隔10秒钟,统计最近60秒钟的搜索词的搜索频次,并打印出排名最靠前的3个搜索词以及出现次数 2、java案例 3、scala案例 阅读全文
posted @ 2019-08-19 13:24 米兰的小铁將 阅读(853) 评论(0) 推荐(0) 编辑
摘要:一、transform以及实时黑名单过滤案例实战 1、概述 2、java案例 2、scala案例 阅读全文
posted @ 2019-08-14 16:45 米兰的小铁將 阅读(762) 评论(0) 推荐(0) 编辑
摘要:一、updateStateByKey 1、概述 2、java案例 3、scala案例 阅读全文
posted @ 2019-08-14 11:10 米兰的小铁將 阅读(414) 评论(0) 推荐(0) 编辑
摘要:一、 transformation操作概览 Transformation Meaning map 对传入的每个元素,返回一个新的元素 flatMap filter 对传入的元素返回true或false,返回的false的元素被过滤掉 union 将两个DStream进行合并 count 返回元素的个 阅读全文
posted @ 2019-08-13 15:06 米兰的小铁將 阅读(231) 评论(0) 推荐(0) 编辑
摘要:一、基于Receiver的方式 1、概述 2、java版本 二、基于Direct的方式 1、概述 2、java版本 阅读全文
posted @ 2019-08-13 14:39 米兰的小铁將 阅读(843) 评论(0) 推荐(0) 编辑
摘要:一、概述1、Socket:之前的wordcount例子,已经演示过了,StreamingContext.socketTextStream()2、HDFS文件基于HDFS文件的实时计算,其实就是,监控一个HDFS目录,只要其中有新文件出现,就实时处理。相当于处理实时的文件流。streamingContext.fileStream(dataDirectory)streamingContext.file... 阅读全文
posted @ 2019-08-12 11:57 米兰的小铁將 阅读(501) 评论(0) 推荐(0) 编辑
摘要:输入DStream代表了来自数据源的输入数据流。在之前的wordcount例子中,lines就是一个输入DStream(JavaReceiverInputDStream),代表了从netcat(nc)服务接收到的数据流。除了文件数据流之外,所有的输入DStream都会绑定一个Receiver对象,该对象是一个关键的组件,用来从数据源接收数据,并将其存储在Spark的内存中,以供后续处理。Spark... 阅读全文
posted @ 2019-08-09 15:51 米兰的小铁將 阅读(408) 评论(0) 推荐(0) 编辑
摘要:一、java版本package cn.spark.study.streaming;import java.util.Arrays;import org.apache.spark.SparkConf;import org.apache.spark.api.java.function.FlatMapFunction;import org.apache.spark.api.java.function.F... 阅读全文
posted @ 2019-08-09 15:39 米兰的小铁將 阅读(329) 评论(0) 推荐(0) 编辑
摘要:一、大数据实时计算介绍 1、概述 2、图解 二、Spark Streaming基本工作原理 1、Spark Streaming简介 2、Spark Streaming基本工作原理 Spark Streaming是将流式计算分解成一系列短小的批处理作业。这里的批处理引擎是Spark Core,也就是把 阅读全文
posted @ 2019-08-08 14:41 米兰的小铁將 阅读(1203) 评论(0) 推荐(0) 编辑
摘要:2xx 成功 200 正常;请求已完成。 201 正常;紧接 POST 命令。 202 正常;已接受用于处理,但处理尚未完成。 203 正常;部分信息 — 返回的信息只是一部分。 204 正常;无响应 — 已接收请求,但不存在要回送的信息。 3xx 重定向 301 已移动 — 请求的数据具有新的位置且更改是永久的。 302 已找到 — 请求的数据临时具有不同 UR... 阅读全文
posted @ 2019-08-08 11:00 米兰的小铁將 阅读(176) 评论(0) 推荐(0) 编辑
摘要:一、概述1、需求分析数据格式:日期 用户 搜索词 城市 平台 版本需求:1、筛选出符合查询条件(城市、平台、版本)的数据2、统计出每天搜索uv排名前3的搜索词3、按照每天的top3搜索词的uv搜索总次数,倒序排序4、将数据保存到hive表中###数据 keyword.txt2018-10-1:leo:water:beijing:android:1.02018-10-1:leo1:water:bei... 阅读全文
posted @ 2019-08-08 10:38 米兰的小铁將 阅读(659) 评论(0) 推荐(0) 编辑
摘要:一、源码分析1、###入口org.apache.spark.sql/SQLContext.scalasql()方法:/** * 使用Spark执行一条SQL查询语句,将结果作为DataFrame返回,SQL解析使用的方言,可以 * 通过spark.sql.dialect参数,来进行设置 */ def sql(sqlText: String): DataFrame = { ... 阅读全文
posted @ 2019-08-07 14:36 米兰的小铁將 阅读(1053) 评论(0) 推荐(0) 编辑
摘要:一、工作原理剖析1、图解二、性能优化1、设置Shuffle过程中的并行度:spark.sql.shuffle.partitions(SQLContext.setConf())2、在Hive数据仓库建设过程中,合理设置数据类型,比如能设置为INT的,就不要设置为BIGINT。减少数据类型导致的不必要的内存开销。3、编写SQL时,尽量给出明确的列名,比如select name from student... 阅读全文
posted @ 2019-08-07 09:34 米兰的小铁將 阅读(1448) 评论(0) 推荐(0) 编辑
摘要:一、UDF1、UDF UDF:User Defined Function。用户自定义函数。2、scala案例package cn.spark.study.sqlimport org.apache.spark.SparkConfimport org.apache.spark.SparkContextimport org.apache.spark.sql.SQLContextimport org.ap... 阅读全文
posted @ 2019-08-06 14:27 米兰的小铁將 阅读(263) 评论(0) 推荐(0) 编辑
摘要:一、开窗函数1、概述Spark 1.4.x版本以后,为Spark SQL和DataFrame引入了开窗函数,比如最经典,最常用的,row_number(),可以让我们实现分组取topn的逻辑。案例:统计每个种类的销售额排名前3的产品二、分组取topN案例1、java实现package cn.spark.study.sql;import org.apache.spark.SparkConf;impo... 阅读全文
posted @ 2019-08-06 10:38 米兰的小铁將 阅读(496) 评论(0) 推荐(0) 编辑
摘要:一、spark1.5内置函数在Spark 1.5.x版本,增加了一系列内置函数到DataFrame API中,并且实现了code-generation的优化。与普通的函数不同,DataFrame的函数并不会执行后立即返回一个结果值,而是返回一个Column对象,用于在并行作业中进行求值。Column可以用在DataFrame的操作之中,比如select,filter,groupBy等。函数的输入值... 阅读全文
posted @ 2019-08-05 17:12 米兰的小铁將 阅读(404) 评论(0) 推荐(0) 编辑
摘要:一、JDBC数据源案例1、概述Spark SQL支持使用JDBC从关系型数据库(比如MySQL)中读取数据。读取的数据,依然由DataFrame表示,可以很方便地使用Spark Core提供的各种算子进行处理。这里有一个经验之谈,实际上用Spark SQL处理JDBC中的数据是非常有用的。比如说,你的MySQL业务数据库中,有大量的数据,比如1000万,然后,你现在需要编写一个程序,对线上的脏数据... 阅读全文
posted @ 2019-08-05 11:46 米兰的小铁將 阅读(394) 评论(0) 推荐(0) 编辑
摘要:一、Hive数据源案例1、概述Spark SQL支持对Hive中存储的数据进行读写。操作Hive中的数据时,必须创建HiveContext,而不是SQLContext。HiveContext继承自SQLContext,但是增加了在Hive元数据库中查找表,以及用HiveQL语法编写SQL的功能。除了sql()方法,HiveContext还提供了hql()方法,从而用Hive语法来编译sql。使用H... 阅读全文
posted @ 2019-08-02 13:23 米兰的小铁將 阅读(603) 评论(0) 推荐(0) 编辑
摘要:一、JSON数据源综合案例实战1、概述Spark SQL可以自动推断JSON文件的元数据,并且加载其数据,创建一个DataFrame。可以使用SQLContext.read.json()方法,针对一个元素类型为String的RDD,或者是一个JSON文件。但是要注意的是,这里使用的JSON文件与传统意义上的JSON文件是不一样的。每行都必须,也只能包含一个,单独的,自包含的,有效的JSON对象。不... 阅读全文
posted @ 2019-08-02 09:55 米兰的小铁將 阅读(381) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示