原创 8.spark core之讀寫數據

  spark支持多種數據源,從總體來分分爲兩大部分:文件系統和數據庫。 文件系統   文件系統主要有本地文件系統、Amazon S3、HDFS等。   文件系統中存儲的文件有多種存儲格式。spark支持的一些常見格式有: 格式名稱

原创 14.spark mllib之快速入門

簡介   MLlib是Spark提供提供機器學習的庫,專爲在集羣上並行運行的情況而設計。MLlib包含很多機器學習算法,可在Spark支持的所有編程語言中使用。   MLlib設計理念是將數據以RDD的形式表示,然後在分佈式數據集上調用各種

原创 5.spark core之RDD編程

  spark提供了對數據的核心抽象——彈性分佈式數據集(Resilient Distributed Dataset,簡稱RDD)。RDD是一個分佈式的數據集合,數據可以跨越集羣中的多個機器節點,被分區並行執行。  在spark中,對數據的

原创 12.spark sql之讀寫數據

簡介   Spark SQL支持多種結構化數據源,輕鬆從各種數據源中讀取Row對象。這些數據源包括Parquet、JSON、Hive表及關係型數據庫等。   當只使用一部分字段時,Spark SQL可以智能地只掃描這些字段,而不會像hado

原创 11.spark sql之RDD轉換DataSet

簡介   Spark SQL提供了兩種方式用於將RDD轉換爲Dataset。 使用反射機制推斷RDD的數據結構   當spark應用可以推斷RDD數據結構時,可使用這種方式。這種基於反射的方法可以使代碼更簡潔有效。 通過編程接口構造一

原创 1.初識scala

簡介   Scala(Scala Language的簡稱)語言是一種能夠運行於JVM和.Net平臺之上的通用編程語言,既可用於大規模應用程序開發,也可用於腳本編程。   Scala由Martin Odersk於2001開發,2004年開始程

原创 13.spark streaming之快速入門

簡介   Spark Streaming是Spark核心API的擴展,可以實現可伸縮、高吞吐量、具備容錯機制的實時流時數據的處理。支持多種數據源,比如Kafka、Flume、Twitter、ZeroMQ、Kinesis 以及TCP sock

原创 4.spark快速入門

  spark框架是用scala寫的,運行在Java虛擬機(JVM)上。支持Python、Java、Scala或R多種語言編寫客戶端應用。 下載Spark   訪問http://spark.apache.org/downloads.html

原创 1.spark簡介

spark是一個用於大規模數據處理的統一計算引擎。適用於各種各樣原先需要多種不同的分佈式平臺處理的場景,包括批處理、迭代計算、交互式查詢、流處理。通過統一的框架將各種處理流程整合到一起。 spark特性 快速性 spark通過使用先進的

原创 2.spark基本概念

Application 用戶編寫的Spark應用程序。Application的main方法爲應用程序的入口,用戶通過Spark的API,定義了RDD和對RDD的操作。 Job  提供給Spark運行的作業,一個Application中以A

原创 3.spark運行模式

spark支持的運行模式:本地模式、本地集羣模式、standalone模式、yarn模式及mesos模式。 本地模式 local、local[N]或local[N,maxRetries]。主要用於代碼調試和跟蹤。不具備容錯能力,不適用於生

原创 10.spark sql之快速入門

前世今生 Hive&Shark   隨着大數據時代的來臨,Hadoop風靡一時。爲了使熟悉RDBMS但又不理解MapReduce的技術人員快速進行大數據開發,Hive應運而生。Hive是當時唯一運行在Hadoop上的SQL-on-Hadoo

原创 6.spark core之鍵值對操作

  鍵值對RDD(pair RDD)是spark中許多操作所需要的常見數據類型,通常用來進行聚合計算。 創建Pair RDD   spark有多種方式可以創建pair RDD。比如:很多存儲鍵值對的數據格式在讀取時直接返回pair RDD;

原创 7.spark core之數據分區

簡介   spark一個最重要的特性就是對數據集在各個節點的分區進行控制。控制數據分佈可以減少網絡開銷,極大地提升整體性能。   只有Pair RDD纔有分區,非Pair RDD分區的值是None。如果RDD只被掃描一次,沒必要預先分區處理

原创 9.spark core之共享變量

簡介   spark執行操作時,可以使用驅動器程序Driver中定義的變量,但有時這種默認的使用方式卻並不理想。 集羣中運行的每個任務都會連接驅動器獲取變量。如果獲取的變量比較大,執行效率會非常低下。 每個任務都會得到這些變量的一份新的副