Spark能做什么

在已经有了一定基础后,继续学习新东西的时候,最首先的就是弄清楚要学的东西能做什么,跟自己已有的知识有什么挂钩的地方。现在打算学习Spark,所以接下来会介绍Spark的最基础的入门。


一、​Spark有些什么?​

1.全面兼容Hadoop的生态系统的MapReduce框架(这可是分布式计算的基础啊)

2.​提供Scala、Java和Python的语言编程接口,总有一门语言适合你��(三门都不会就老实学一门吧)

3.提供一个叫MLlib​的工具包,可以支持机器学习或者数据挖掘方面的工作,据说还很完善,效果很好(没试过的小伙伴表示都惊呆了!这是真的吗?)

二、Spark的特性

1.Resilient Distributed Datasets​,以下用RDD表示(可扩展分布式数据集,这么一翻译感觉都高大上了呢~)用SparkContext.parallelize和SparkContext.textFile、SparkContext.wholeTextFile可以分别从内存、HDFS文本、HDFS文件夹这三个数据源读取RDD数据,然后就可以快乐的用map、reduce等各种方法来处理数据啦!

2.Caching RDDs用于跨集群缓存,如果调用rddFromTextFile.cache方法,相当于告诉机器说,该数据需要保存在内存中,以支持后续使用;对应的有persist方法,用于辨识函数是运行在cache数据上面的

3.Spark提供script支持运行在​Amazon EC2云服务上面的集群,当然得先有云服务的账号,注册一个去吧,妥妥的

三、​商业上的需求有哪些?

1.​个人推荐

2.目标市场和人群划分

3.预测模型和分析​

四、机器学习和数据挖掘的共同流程​

1.数据获取和存储

2.数据清洗和​转化

3.​模型训练

4.模型评估,循环测试调整

5.模型部署和使用​

6.监控和反馈​

五、​Spark可以用来训练哪些模型?

1.推荐引擎(Recommendation Engine)​

推荐引擎里面广泛使用的两个​方法分别是基于文本过滤(content-based filtering)和协同过滤(collaborative filtering),书中使用MLlib中的ALS模块来训练推荐引擎,训练之后的模型,调用predict方法来使用

使用MSE(Mean Squared Error)、RMSE(Root Mean Squared Error)、MAP(Mean Average Precision)等评估模型​​

2.分类模型(​Classification Model)

分类模型使用的方法有:线性模型-linear models(想象在平面画一条或多条线​来分隔不同的点,分到同一个区域的被认为是同一个类别)、决策树模型-decision trees(原始数据不断的在每个断点判断并作出选择,直到树的叶子节点,该节点的类标签就是该数据的标签)和朴素贝叶斯-naive Baye(由已知的概率,推断具有数据类标签的概率)

org.apache.spark.mllib.classification中提供​LogisticRegressionWith SGD、SVMWithSGD和NaiveBayes三个分类训练器,org.apache.spark.mllib.tree提供一些对应的树形训练器

使用precision和recall来评估模型​

3.回归模型(Regression Model)​

回归模型有两个主要类型:线性回归模型(linear regression model)和决策树回归模型(decision tree regression model)(跟前面分类模型岂不是重叠,作者你在绕晕我吗?其实不是的,使用分类模型​预测的值是分散的,而使用回归模型预测得到的值是连续的,这就是区别)

pyspark.mllib.regression中提供LinearRegressionWithSGD用于线性回归模型训练,pyspark.mllib.tree中提供DecisionTree.trainRegressor用于决策树回归模型的训练​

4.聚类模型(Clustering Model)

org.apache.spark.mllib.clustering提供​KMeans用于训练K-Means聚类模型,当然这个模块里面还有别的训练算法,用起来吧……

六、Spark其他​的一些功能

  • 1.可用于SGD、L-BGFS等梯度算法的计算

  • 2.可用于交叉验证(Cross Validation)

  • 3.兼容matplotlib

  • 4.降维(Dimensionality Reduction)

    降维方法有PCA(Principal Components Analysis - 主成分分析)和SVD(Singular Value Decomposition - 奇异值分解)​
    org.apache.spark.mllib.linalg.Matrix和org.apache.spark.mllib.linalg.distributed.RowMatrix提供训练PCA的方法computePrincipalComponents,提供训练SVD的方法computeSVD

  • 5.Word2Vec
    org.apache.spark.mllib.feature.Word2Vec用于Word2Vec计算​

  • 6.online learning机制

    Spark提供Spark Streaming​模块用于动态获取HDFS数据,并用于online learning,这个过程涉及到一个叫Window operators的方法,该方法使用窗口定义,从数据流stream中动态的获取一个窗口的数据,然后使用,这个窗口的定义要小心,如果窗口的调度时间比数据的处理时间大得多,可能出现数据阻塞的问题,这个时候需要将窗口的大小扩展
    使用org.apache.spark.streaming.StreamingContext创建streming

  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值