一、Spark框架预览
主要有Core、GraphX、MLlib、Spark Streaming、Spark SQL等几部分。
GraphX是进行图计算与图挖掘,其中主流的图计算框架现在有:Pregal、HAMA、Giraph(这几部分采用超步即同步的方式),而GraphLab与Spark GraphX采用异步的方式进行。它与Spark SQL进行协作时,一般是用SQL语句来进行ETL(Extract-Transform-Load数据仓库技术)然后交给GraphX处理。
Spark SQL的前身是Shark,而Shark前身又是Hive,Spark摆脱了对Hive的依赖,吸取了Shark的许多优点如采用内存列存储结构,实现快速的GC(一种回收内存机制)以及紧凑的存储结构;字节码生成技术(CG)也加快了查询,并且采用Scala代码优化。Spark SQL采用parse生成Tree,然后在Tree上进行绑定优化等操作,操作的方法是Rule,最终生成可执行的物理计划。
MLlib是机器学习库,机器学习是人工智能的核心,算法主要有监督、无监督、半监督、强化学习等,也可分为:分类、聚类、回归(回归问题又可以产生正则化、贝叶斯等)、决策树、关联规则、深度学习、人工神经网络、深度学习(由神经网络发展)、降维、集成等。
附:Java内存空间有堆(存储new的对象)、栈(局部变量)、静态存储区(存储一些常量和static声明的变量,一般在编译阶段就分配好)
二、Scala
1、偏函数于部分应用函数?
偏函数(patial function)是一个数学概念表示有部分值没有被定义处理,而部分应用函数(patial applied function)则指的是提供少于定义的N个参数;
2、闭包
实际上闭包就是指:代码+非局部变量
3、高阶函数
高阶函数是Scala函数式编程的一个重要概念,就是将一个函数作为参数返回一个需要的函数
代码实例
1 def mulBy(factor: Double) = (x: Double) => factor * x
2
3 // mulBy可以产出任何两个数相乘的函数
4 val quintuple = mulBy(5) // (x: Double) => 5 * x
5 quintuple(20) // 5 * 20
三、语义分析
语义分析是NLP的一种,NLP又是人工智能的一大研究方向,属于一个交叉学科,往往结合大数据能做出很多的智能应用。