在已经有了一定基础后,继续学习新东西的时候,最首先的就是弄清楚要学的东西能做什么,跟自己已有的知识有什么挂钩的地方。现在打算学习Spark,所以接下来会介绍Spark的最基础的入门。
 
  一、​Spark有些什么?​
 
  1.全面兼容Hadoop的生态系统的MapReduce框架(这可是分布式计算的基础啊)
 
  2.​提供Scala、Java和Python的语言编程接口,总有一门语言适合你��(三门都不会就老实学一门吧)
 
  3.提供一个叫MLlib​的工具包,可以支持机器学习或者数据挖掘方面的工作,据说还很完善,效果很好(没试过的小伙伴表示都惊呆了!这是真的吗?)
 
  ​二、Spark的特性
 
  1.ResilientDistributedDatasets​,以下用RDD表示(可扩展分布式数据集,这么一翻译感觉都高大上了呢~)用SparkContext.parallelize和SparkContext.textFile、SparkContext.wholeTextFile可以分别从内存、HDFS文本、HDFS文件夹这三个数据源读取RDD数据,然后就可以快乐的用map、reduce等各种方法来处理数据啦!
 
  2.CachingRDDs用于跨集群缓存,如果调用rddFromTextFile.cache方法,相当于告诉机器说,该数据需要保存在内存中,以支持后续使用;对应的有persist方法,用于辨识函数是运行在cache数据上面的
 
  3.Spark提供script支持运行在​AmazonEC2云服务上面的集群,当然得先有云服务的账号,注册一个去吧,妥妥的
 
  三、​商业上的需求有哪些?
 
  1.​个人推荐
 
  2.目标市场和人群划分
 
  3.预测模型和分析​
 
  四、机器学习和数据挖掘的共同流程​
 
  1.数据获取和存储
 
  2.数据清洗和​转化
 
  3.​模型训练
 
  4.模型评估,循环测试调整
 
  5.模型部署和使用​
 
  6.监控和反馈​
 
  五、​Spark可以用来训练哪些模型?
 
  1.推荐引擎(RecommendationEngine)​
 
  推荐引擎里面广泛使用的两个​方法分别是基于文本过滤(content-basedfiltering)和协同过滤(collaborativefiltering),书中使用MLlib中的ALS模块来训练推荐引擎,训练之后的模型,调用predict方法来使用
 
  使用MSE(MeanSquaredError)、RMSE(RootMeanSquaredError)、MAP(MeanAveragePrecision)等评估模型​​
 
  2.分类模型(​ClassificationModel)
 
  分类模型使用的方法有:线性模型-linearmodels(想象在平面画一条或多条线​来分隔不同的点,分到同一个区域的被认为是同一个类别)、决策树模型-decisiontrees(原始数据不断的在每个断点判断并作出选择,直到树的叶子节点,该节点的类标签就是该数据的标签)和朴素贝叶斯-naiveBaye(由已知的概率,推断具有数据类标签的概率)
 
  org.apache.spark.mllib.classification中提供​LogisticRegressionWithSGD、SVMWithSGD和NaiveBayes三个分类训练器,org.apache.spark.mllib.tree提供一些对应的树形训练器
 
  使用precision和recall来评估模型​
 
  3.回归模型(RegressionModel)​
 
  回归模型有两个主要类型:线性回归模型(linearregressionmodel)和决策树回归模型(decisiontreeregressionmodel)(跟前面分类模型岂不是重叠,作者你在绕晕我吗?其实不是的,使用分类模型​预测的值是分散的,而使用回归模型预测得到的值是连续的,这就是区别)
 
  pyspark.mllib.regression中提供LinearRegressionWithSGD用于线性回归模型训练,pyspark.mllib.tree中提供DecisionTree.trainRegressor用于决策树回归模型的训练​
 
  4.聚类模型(ClusteringModel)
 
  org.apache.spark.mllib.clustering提供​KMeans用于训练K-Means聚类模型,当然这个模块里面还有别的训练算法,用起来吧……
 
  六、Spark其他​的一些功能
 
  1.可用于SGD、L-BGFS等梯度算法的计算
 
  2.可用于交叉验证(CrossValidation)
 
  3.兼容matplotlib
 
  4.降维(DimensionalityReduction)
 
  降维方法有PCA(PrincipalComponentsAnalysis-主成分分析)和SVD(SingularValueDecomposition-奇异值分解)​
 
  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.onlinelearning机制
 
  Spark提供SparkStreaming​模块用于动态获取HDFS数据,并用于onlinelearning,这个过程涉及到一个叫Windowoperators的方法,该方法使用窗口定义,从数据流stream中动态的获取一个窗口的数据,然后使用,这个窗口的定义要小心,如果窗口的调度时间比数据的处理时间大得多,可能出现数据阻塞的问题,这个时候需要将窗口的大小扩展
 
  使用org.apache.spark.streaming.StreamingContext创建streming