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.