Pipeline的最终目的就是学会Spark MLlib,这里先瞧瞧作到内心有数:知道以后要学什么,怎么学。html
四类算法:分类、回归、聚类、协同过滤python
以及特征提取、降维、数据流管理功能。mysql
后者能够与Spark SQL完美结合,支持的算法以下:算法
Spark SQL中的DataFrame做为数据集。sql
Transformer: 打上标签。apache
Estimator: 训练数据的算法。json
parameter: 参数。api
最后,经过接口将各个Transformer组装起来构成”数据流“。app
>>> pipeline = Pipeline(stags=[stage1,stage2,stage3])
Tokenizer ----> HashingTF ----> Logistic Regression机器学习
参考:[ML] Naive Bayes for Text Classification
tokenizer = Tokenizer(inputCol = "text", outputCol = "words") hashingTF = HashingTF(inputCol = tokenizer.getOutputCol(), outputCol = "feature") lr = LogisticRegression(maxIter = 10, regParam = 0.001)
# 获得一个评估器
pipeline = Pipeline(stages = [tokenizer, hashingTF, lr])
model = pipeline.fit(training)
test = spark.createDataFrame([ (4, "spark i j k"), (5, "l m n"), (6, "spark hadoop spark"), (7, "apache hadoop") ], ["id", "text"])
# 测试过程
prediction = moel.transform(test)
# 展现测试结果
selected = prediction.select("id", "text", "probability", "prediction")
for row in selected.collect():
rid, text, prob, prediction = row
print(...)
part-00178-88b459d7-0c3a-4b84-bb5c-dd099c0494f2.c000.snappy.parquet
1. 链接spark
2. 建立dataframe
2.1. 从变量建立
2.2. 从变量建立
2.3. 读取json
2.4. 读取csv
2.5. 读取MySQL
2.6. 从pandas.dataframe建立
2.7. 从列式存储的parquet读取
2.8. 从hive读取
3. 保存数据
3.1. 写到csv
3.2. 保存到parquet
3.3. 写到hive
3.4. 写到hdfs
3.5. 写到mysql
注意,这里的 “users.parquet” 是个文件夹!
# 读取example下面的parquet文件 file = r"D:\apps\spark-2.2.0-bin-hadoop2.7\examples\src\main\resources\users.parquet"
df = spark.read.parquet(file) df.show()
Spark2.1.0+入门:读写Parquet(DataFrame)(Python版)
>>> parquetFileDF = spark.read.parquet("file:///usr/local/spark/examples/src/main/resources/users.parquet"
>>> parquetFileDF.createOrReplaceTempView("parquetFile") >>> namesDF = spark.sql("SELECT * FROM parquetFile") >>> namesDF.rdd.foreach(lambda person: print(person.name)) Alyssa Ben
大文件通常都放在S3中,如何在本地远程处理呢?
其实AWS已经提供了方案:Amazon EMR
Welcome to Spark Python API Docs!
Spark MLlib是Spark中专门用于处理机器学习任务的库,但在最新的Spark 2.0中,大部分机器学习相关的任务已经转移到Spark ML包中。
二者的区别在于MLlib是基于RDD源数据的,而ML是基于DataFrame的更抽象的概念,能够建立包含从数据清洗到特征工程再到模型训练等一系列机器学习工做。
因此,将来在用Spark处理机器学习任务时,将以Spark ML为主。
End.