一.main函数的分析 首先来看我们在上一节最后看到的这个程序,我们先来简单的分析一下.有助于后面的学习 object HelloScala { def main(args: Array[String]): Unit = { println("I Love You Scala"); } } 如图所看到的,在Scala中能够使用object和class分别定义一个类.两者还是存在一些区别.以后我会在专门的博客中给予介绍. 在Scala中定义一个函数使用:def 来修饰 完整定义一个函数为…
1. 函数 函数就是一个非常灵活的运算逻辑,可以灵活的将函数传入方法中,前提是方法中接收的是类型一致的函数类型 函数式编程的好处:想要做什么就调用相应的方法(fliter.map.groupBy.sortBy),想要具体怎么做,就传入相应的函数 函数式编程的特点之一就是支持链式编程(不停的函数调用函数) 1.1 一种更加简洁的定义函数的方式(_) 以前的形式 简洁的形式  "_" 相当于一个占位符,将遍历出来的值赋给这个占位符 该占位符号出现两次,其会认为出现两个参数,由于此处就是一个…
准备数据 2,b 3,c 4,d 7,y 8,u 2,bb 3,cc 7,yy 9,pp 建表: create table a(id int,name string) row format delimited fields terminated by ','; create table b(id int,name string) row format delimited fields terminated by ','; 导入数据: load data local inpath '/root/h…
HDFS写入过程注释解读 & 源码分析 此篇博客承接上一篇未讲完的内容,将会着重分析一下在Namenode获取到元数据后,具体是如何向datanode节点写入真实的数据的 1. 框架图展示 在开始前,还是老规矩,先上图 本篇内容将会重点介绍HDFS写入流程七大步骤中的4,5步骤,即数据包写入和数据包确认(write packet & ack packet) 2. 源码分析 2.1 文档注释翻译 在讲解这部分内容时会涉及到的类是DFSPacket DFSPacket类 DFSPacket i…
HDFS写入过程方法调用逻辑 & 源码注释解读 前一篇介绍HDFS模块的博客中,我们重点从实践角度介绍了各种API如何使用以及IDEA的基本安装和配置步骤,而从这一篇开始,将会正式整理HDFS的读写原理分析,由于全部一次性整理篇幅过长,本人会将这一部分的内容拆分成多篇,这一篇将会从宏观上把控整个写入过程的框架,并啃一啃源码中的注释部分,好了,废话不多说,直接开始吧! 1. 框架图展示 上图摘录自<Hadoop权威指南>,从这张图可知,整个写入过程被分成了七大步骤,在第一篇源码分析博客中…
1. 练习 数据: (1)需求1:统计有过连续3天以上销售的店铺有哪些,并且计算出连续三天以上的销售额 第一步:将每天的金额求和(同一天可能会有多个订单) SELECT sid,dt,SUM(money) day_money FROM v_orders GROUP BY sid,dt 第二步:给每个商家中每日的订单按时间排序并打上编号 SELECT sid,dt,day_money, ROW_NUMBER() OVER(PARTITION BY sid ORDER BY dt) rn FROM…
因为面对对象作业(2018.5.21)的要求,去学习了C/C++中main函数参数的意义,以及一些简单的使用(从命令行指令的接受),不给予赘述.(仅为个人拙见,还望看官指正) 首先,带有参数的main函数如下表示: int main( int argc, char* argv[] ) { do something; return 0; } 其中,argc为从命令行中接受的指令个数,argv为从命令行中接受的指令内容.通俗地理解,argc就是在命令行中敲了几个字符串,argv便是这几个字符串的值(…
在学Spark之前,我们再回顾一下MapReduce的知识,这对我们理解Spark大有裨益. 在大数据的技术分层中,Spark和MapReduce同为计算层的批处理技术,但是Spark比MapReduce要快很多.看看官网是怎么说的Apache Spark. 简介 Apache Spark是一个统一的大规模数据处理分析引擎.它提供基于Java,Scala, Python和R语言的高级api,并且自动优化执行流程.它还支持丰富的高级工具,包括用于处理结构化数据的Spark SQL,用于机器学习的M…
关于Scala中的正则表达式与模式匹配结合的正则表达式Reg 正则表达式的实现:正则表达式的定义与其它语言差不多,只需在表达式后加一个.r,并且可以遍历相应的表达式进行匹配 //定义的正则表达式 val regex="""([0-9]+) ([a-z]+)""".r //由数字与字母组成的常量 val numPattern = "[0-9]+".r //由数字组成的常量 val numberPattern = "&q…
1. Redis Redis是目前一个非常优秀的key-value存储系统(内存的NoSQL数据库).和Memcached类似,它支持存储的value类型相对更多,包括string(字符串).list(链表).set(集合).zset(sorted set有序集合)和hash(哈希类型). 1.1 redis的安装(源码安装方式,官网供下载的redis,没有编译的,需要自己编译) (1)下载redis4的稳定版本 (2)上传redis-4.0.14.tar.gz到Linux服务器 (3)解压re…