天天看點

[雪峰磁針石部落格]pyspark工具機器學習(自然語言處理和推薦系統)1資料演進

在早期員工将資料輸入系統,資料點非常有限,隻占用少數幾個字段。然後是網際網路,每個人都可以輕松擷取資訊。現在,使用者可輸入并生成自己的資料。随着網際網路使用者數量呈指數級增長,使用者創造的高資料增長率。例如:登入/系統資料庫單允許使用者填寫自己的詳細資訊,在各種社交平台上上傳照片和視訊。這導緻了巨大的資料生成以及快速處理資料量的且可擴充的架構的需求。

資料生成

裝置都捕獲資料,如汽車,建築物,手機,手表,飛行引擎。

資料處理也從串行轉向并行處理。

Spark

Spark是處理海量資料集的架構,具有高速并行處理功能。它最初是加州大學伯克利分校AMPLabin 2009的研究項目,于2010年初開源。 2016年,Spark釋出了針對深度學習的TensorFrames。

Spark底層使用RDD(彈性分布式資料集Resilient Distributed Dataset)的資料結構。它能夠在執行過程中重新建立任何時間點。 RDD使用最後一個建立的RDD,并且總是能夠在出現任何錯誤時進行重構。它們是不可變的,因為原始RDD還在。由于Spark基于分布式架構,是以它适用于master和worker節點設定。執行任何活動的代碼首先寫在Spark Driver上,資料實際駐留的workers之間共享。每個工作節點包含将實際執行代碼的Executors。 Cluster Manager會檢查下一個任務配置設定的各個工作節點的可用性。

Spark非常容易用于資料處理,機器學習和流媒體資料; 并且它相對非常快,因在記憶體中計算。由于Spark是通用的資料處理引擎,它可以很容易地與各種資料源一起使用,如HBase,Cassandra,Amazon S3,HDFS等.Spark為使用者提供了四種語言選項:Java,Python,Scala和R.

參考資料

Spark Core

Spark Core支援記憶體計算,可驅動并行分布式資料處理。 Spark Core負責管理任務,I/O操作,容錯和記憶體管理等。

Spark元件

  • Spark SQL

主要處理結構化資料。擷取有關資料結構的更多資訊,以執行優化,是分布式SQL查詢引擎。

  • Spark Streaming

以可擴充和容錯的方式處理實時流資料。它使用微批處理來讀取和處理傳入的資料流。它建立微批流資料,執行批處理,并将其傳遞到檔案存儲或liveashboard。 Spark Streaming可以從多個來源(如Kafka和Flume)中擷取資料。

  • Spark MLlib

以分布式方式在BigData上建構機器學習模型。使用Python的scikit學習庫建構ML模型的傳統技術在資料巨大時面臨許多挑戰,而MLlib可以提供大規模的特征工程和機器學習。 MLlib支援分類,回歸,聚類,推薦系統和自然語言處理等算法。

  • Spark GraphX/Graphframe

在圖形分析和圖形并行執行方面表現優異。圖形架構可用于了解底層關系并可視化資料。

參考:

https://spark.apache.org/docs/latest/api/python/

安裝

https://medium.com/@GalarnykMichael/install-spark-on-ubuntu-pyspark-231c45677de0