经过前面两篇对于Spark概念和核心结构的介绍,让我们继续深入了解Spark:) 本篇讲述了Spark Streaming和机器学习,大数据中Spark到底做了啥,快来看看吧!
传送门:
六、无限数据帧的结构化Streaming
对于Spark相对短暂的历史来说,Spark streaming 持续发展,简化了streaming应用的编写。现在开发人员不仅需要一个Streaming编程模型来将元素(element)转换成streaming,他们还需要一个Streaming模型来支持端到端应用不断对实时数据进行反应。我们称之为对实时数据反应的continuous application。
continuous application有很多方面——和批处理与实时数据相互作用,执行ETL,从批处理和steam获得数据到面板上,或者结合静态数据集与实时数据做在线机器学习,目前这些都是由分割的应用而不是单一一个应用来处理。
Apache Spark 2.0为一个新的更高层级的API建立了基础的步骤,结构化Streaming,构建了连续应用。
结构化Streaming的核心是你把数据的stream当做无限的表(unbounded table)。一旦从stream过来新的数据,DataFrame新的行(row)将被加到这个无限的表中:
你可以在无限的表中像在一个静态表里一样执行计算或者发布SQL类型的询问操作。在这种情况下,开发者可以像批处理计算一样表达他们的streaming计算,当数据到达stream,Spark将逐步自动执行。
基于DataFrames/Datasets API,使用结构化Streaming API一个很酷的好处是基于询问一个批数据框(a batch DataFrame)的DataFrame/SQL会类似于一个streaming,在上图你可以看到代码,只有微小的改动。在批处理版本中,我们读一个静态有界日志文件,而在streaming的版本中,我们读的是一个无限的stream。代码虽然看似简单,所有复杂的部分都被隐藏了起来,由底层模型和执行引擎来处理,这些在视频() 中会提到。
在你深入了解视频中的结构化Streaming之后,读一下《 Structure Streaming Programming Model》( ),它阐述了数据完整性的所有底层复杂度,容错,执行一次的语义(exactly-once semantics),基于窗口的聚合,以及无序数据。作为一个开发人员或者用户,你无须再担心它们。
七、机器学习
现阶段的机器学习,都是关于统计学习技术和算法应用到大数据集来识别模式,根据这些模式做出概率预测。一个简化的视图模型是一个数学函数f(x);一个大数据集作为输入,函数f(x)反复应用于数据集生成预测的输出。
关于机器学习的术语, Matthew Mayo的《Machine Learning Key Terms, Explained》( )是一个有价值的参考。
机器学习的流程
Apache Spark的DataFrame-based MLlib( )提供了一组算法的模型和工具,允许数据科学家轻松地构建机器学习流程。借用了scikit-learn项目,MLlib pipelines允许开发人员将多种算法结合到一个流水线或工作流。通常运行机器学习算法涉及到一系列的任务,包括预处理、特征提取、模型拟合,以及验证阶段。在Spark 2.0这个流程可以持续到再次重新加载,跨语言进行Spark支持。
ApacheSpark MLlib的网络研讨会( )上,你将会快速地进行机器学习和Spark MLlib的入门,并概述了一些Spark机器学习的用例,也有一些其他的数据科学工具与MLib的集成,如Python,pandas,SparkMLlib和R。
此外还有一些博客推荐,让你深入了解机器学习模型以及机器学习在高级分析中起着至关重要的作用。
2015 Median Home Price by State( )
Population vs. Median Home Prices: Linear Regression with Single Variable( )
Saving and Loading Machine Learning Models in Apache Spark 2.0( )
作者:Jules S. Damji & Sameer Farooqui, Databricks.
文章来源: