spark演算法
『壹』 用Spark做數據分析是怎樣一種體驗
數據科學家為了回答一個問題或進行深入研究,會使用相關的技術分析數據。通常,他們的工作包含特殊的分析,所以他們使用互動式shell,以使得他們能在最短的時間內看到查詢結果和代碼片段。Spark的速度和簡單的API介面很好地符合這個目標,它的內建庫意味著很多演算法可以隨時使用。
Spark通過若干組件支持不同的數據科學任務。Spark shell使得用Python或Scala進行互動式數據分析變得簡單。Spark sql也有一個獨立的SQL shell,可以用SQL進行數據分析,也可以在Spark程序中或Spark shell中使用Spark SQL。MLlib庫支持機器學習和數據分析。而且,支持調用外部的MATLAB或R語言編寫的程序。Spark使得數據科學家可以用R或Pandas等工具處理包含大量數據的問題。
有時,經過初始的數據處理階段後,數據科學家的工作將被產品化,擴展,加固(容錯性),進而成為一個生產數據處理應用,作為商業應用的一個組件。例如,一個數據科學家的研究成果可能會產生一個產品推薦系統,集成到一個web應用上,用來向用戶生成產品建議。通常由另外的人員(如工程師)對數據科學家的工作進行產品化。
這個的話,先要了解下當下比較火的大數據,ITjob官網上有大數據和Spark的文章和帖子,如果覺得回答的不夠詳細,可以自己再去了解下。也可以去專業的貼吧和博客尋找下答案。
『貳』 遺傳演算法可以用spark實現嗎,如何實現
遺傳演算法算是迭代計算的,spark這種計算框架非常適合迭代計算。
『叄』 spark中有dbscan演算法嗎
看清楚dbscan演算法中有兩個關鍵的參數是 EPS, and Min group threshold. 直觀的想法是,如果你的eps很大,min-group-threshold 也很大的時候,那你得到的聚類的類數目就會少很多,那你搜索的時候就可能很快收斂。
『肆』 如何運行spark mllib 演算法
LS會建立一個user*proct的m*n的矩陣 其中,m為users的數量
『伍』 spark機器學習-聚類
spark機器學習-聚類
聚類演算法是一種無監督學習任務,用於將對象分到具有高度相似性的聚類中,聚類演算法的思想簡單的說就是物以類聚的思想,相同性質的點在空間中表現的較為緊密和接近,主要用於數據探索與異常檢測,最常用的一種聚類演算法是K均值(K-means)聚類演算法
演算法原理
kmeans的計算方法如下:
1 選取k個中心點
2 遍歷所有數據,將每個數據劃分到最近的中心點中
3 計算每個聚類的平均值,並作為新的中心點
4 重復2-3,直到這k個中線點不再變化(收斂了),或執行了足夠多的迭代
演算法的時間復雜度上界為O(n*k*t), 其中k為輸入的聚類個數,n為數據量,t為迭代次數。一般t,k,n均可認為是常量,時間和空間復雜度可以簡化為O(n),即線性的
spark ml編碼實踐
可在spark-shell環境下修改參數調試以下代碼,可以用實際的業務數據做測試評估,業務數據一般是多列,可以把維度列用VectorAssembler組裝成向量列做為Kmeans演算法的輸入列,考慮現實的應用場景,比如做異常數據檢測,正常數據分為一類,異常數據分為幾類,分別統計正常數據與異常數據的數據量,求百分比等
<span style="font-size:18px;">import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
val dataset = sqlContext.createDataFrame(Seq(
(1, Vectors.dense(0.0, 0.0, 0.0)),
(2, Vectors.dense(0.1, 0.1, 0.1)),
(3, Vectors.dense(0.2, 0.2, 0.2)),
(4, Vectors.dense(9.0, 9.0, 9.0)),
(5, Vectors.dense(1.1, 1.1, 0.1)),
(6, Vectors.dense(12, 14, 100)),
(6, Vectors.dense(1.1, 0.1, 0.2)),
(6, Vectors.dense(-2, -3, -4)),
(6, Vectors.dense(1.6, 0.6, 0.2))
)).toDF("id", "features")
// Trains a k-means model
val kmeans = new KMeans().setK(3).setMaxIter(20).setFeaturesCol("features").setPredictionCol("prediction")
val model = kmeans.fit(dataset)
// Shows the result
println("Final Centers: ")
model.clusterCenters.foreach(println)
model.clusterCenters.zipWithIndex.foreach(println)
val myres = model.transform(dataset).select("features","prediction")
myres.show()</span>
聚類演算法是一類無監督式機器學習演算法,聚類效果怎麼評估,模型訓練參數怎麼調優,是否能用管道來訓練模型來比較各種不同組合的參數的效果,即網格搜索法(gridsearch),先設置好待測試的參數,MLLib就會自動完成這些參數的不同組合,管道搭建了一條工作流,一次性完成了整個模型的調優,而不是獨立對每個參數進行調優,這個還要再確認一下,查看SPARK-14516好像目前還沒有一個聚類效果通用的自動的度量方法
像這種代碼(不過現在這個代碼有問題):
<span style="font-size:18px;">import org.apache.spark.ml.clustering.KMeans
import org.apache.spark.mllib.linalg.Vectors
import org.apache.spark.ml.tuning.{ ParamGridBuilder, CrossValidator }
import org.apache.spark.ml.{ Pipeline, PipelineStage }
val dataset = sqlContext.createDataFrame(Seq(
(1, Vectors.dense(0.0, 0.0, 0.0)),
(2, Vectors.dense(0.1, 0.1, 0.1)),
(3, Vectors.dense(0.2, 0.2, 0.2)),
(4, Vectors.dense(9.0, 9.0, 9.0)),
(5, Vectors.dense(1.1, 1.1, 0.1)),
(6, Vectors.dense(12, 14, 100)),
(6, Vectors.dense(1.1, 0.1, 0.2)),
(6, Vectors.dense(-2, -3, -4)),
(6, Vectors.dense(1.6, 0.6, 0.2))
)).toDF("id", "features")
val kmeans = new KMeans().setK(2).setMaxIter(20).setFeaturesCol("features").setPredictionCol("prediction")
//主要問題在這里,沒有可用的評估器與label列設置
val evaluator = new BinaryClassificationEvaluator().setLabelCol("prediction")
val paramGrid = new ParamGridBuilder().addGrid(kmeans.initMode, Array("random")).addGrid(kmeans.k, Array(3, 4)).addGrid(kmeans.maxIter, Array(20, 60)).addGrid(kmeans.seed, Array(1L, 2L)).build()
val steps: Array[PipelineStage] = Array(kmeans)
val pipeline = new Pipeline().setStages(steps)
val cv = new CrossValidator().setEstimator(pipeline).setEvaluator(evaluator).setEstimatorParamMaps(paramGrid).setNumFolds(10)
// Trains a model
val pipelineFittedModel = cv.fit(dataset)</span>
『陸』 大數據中的Spark指的是什麼
謝謝邀請!
spark最初是由伯克利大學的amplab於2009年提交的一個項目,現在已經是Apache軟體基金會最活躍的項目,對於spark,apache給出的官方定義是:spark是一個快速和通用的大數據處理引擎。可以理解為一個分布式大數據處理框架,spark是基於Rdd(彈性分布式數據集),立足於內存計算,在「one stack to rule them all」 的思想引導下 ,打造了一個可以流式處理(spark streaming),機器學習(mllib),實時查詢(spark sql),圖計算(graphx)等各種大數據處理,無縫連接的一棧式計算平台,由於spark在性能和擴展上快速,易用,通用的特點,使之成為一個一體化,多元化的大數據計算平台。
spark的一棧式優勢
1 快速處理,比hadoop快100倍,因為spark是基於內存計算,而hadoop是基於磁碟計算
2易用性,spark支持多種語言
3 通用性強,可以流式處理,及時查詢,圖計算,機器學習
4 可以和hadoop數據集成,運行在yarn上,統一進行資源管理調度
5 活躍和壯大的社區
以上是關於spark的簡單定義,希望我的回答可以採納,謝謝
『柒』 如何高大上的描述spark
Apache Spark 是專為大規模數據處理而設計的快速通用的計算引擎,是一種快速、通用、可擴展的大數據分析引擎。
Spark 是一種與 Hadoop 相似的開源集群計算環境,但是兩者之間還存在一些不同之處,這些有用的不同之處使 Spark 在某些工作負載方面表現得更加優越,換句話說,Spark 啟用了內存分布數據集,除了能夠提供互動式查詢外,它還可以優化迭代工作負載。
Spark能更好地適用於數據挖掘與機器學習等需要迭代的MapRece的演算法。
『捌』 spark中有哪些推薦系統演算法
item表示迭代的參數 比如你的這個數組通過request.setAttribute("array",xxx)放入了這個里,迭代的內容就是${requestScope.array} var 相當於一個引用 下面你就可以用 ${array.xxx1} ${array.xxx2} 將數組里的值輸出出來了
『玖』 有沒有人用Spark的機器演算法mllib,好不好用
速度還是比較快的,不過精度沒有串列的高,因為很多地方為了效率做了近似