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

 

你可能感兴趣的:(spark擅长干嘛)