Spark專題-第一部分:Spark 核心概述(1)-Spark 是什么?

眾所周知,教學文檔總該以理論部分作為開篇,于是我們這篇Spark專題同樣會以一堆理論和專有名詞開始,筆者會盡可能的讓專業詞匯通俗易懂

第一部分:Spark 核心概述

Spark 是什么?

1. 大數據時代的"超級賽車"

舉個例子,你有一個巨大的圖書館(HDFS),里面有數百萬本書(數據)。你需要找出所有提到"人工智能"的書籍并統計次數。

  • 傳統方式(MapReduce):你雇傭一群人,每人拿幾本書,找到關鍵詞后記錄下來,然后把所有記錄交給一個人匯總。這個過程需要反復往返圖書館書架(磁盤IO),速度較慢。

  • Spark 方式:你給每個人一個神奇的書架(內存),他們可以一次性拿多本書放在手邊,快速查找并記錄,大大減少了往返時間。

Spark 就是一個基于內存計算的分布式大數據處理引擎,它比傳統的 MapReduce 快 10-100 倍!

2. Spark 的四大特性

  1. 速度快

    • 內存計算:減少磁盤 I/O,中間結果保存在內存中
    • 查詢優化:先進的查詢優化器和代碼生成器
  2. 易用性

    • 多語言支持:Java, Scala, Python, R
    • 高級 API:只需要關注"做什么",而不是"怎么做"
  3. 通用性

    • Spark 生態系統提供一站式解決方案:
Spark Core
核心引擎
Spark SQL
Spark Streaming
MLlib
機器學習
GraphX
圖計算
結構化數據處理
實時流處理
機器學習算法
圖分析
  1. 兼容性
    • 多種數據源:HDFS, HBase, Cassandra, S3, Local FS…
    • 多種部署模式:Standalone, YARN, Kubernetes, Mesos

3. Spark 的核心架構

分配任務 & 監控
分配資源
分配資源
分配資源
工作節點3
Executor
工作進程
Task
計算單元
Cache
內存緩存
工作節點2
Executor
工作進程
Task
計算單元
Cache
內存緩存
工作節點1
Executor
工作進程
Task
計算單元
Cache
內存緩存
Driver Program
大腦節點
Cluster Manager
資源調度員

核心組件解析

  • Driver:大腦,負責協調整個作業的執行
  • Cluster Manager:資源調度員,負責分配計算資源
  • Worker Node:干活的工作人員,每個節點可以運行一個或多個 Executor
  • Executor:工作進程,負責執行具體的計算任務
  • Task:最小工作單元,處理一個數據分區的計算

4. Spark 與 Hadoop 的關系

應用程序層
Spark, Hive, HBase
計算引擎層
Spark, MapReduce
資源管理層
YARN, Mesos
存儲層
HDFS, S3

Spark 不是要取代 Hadoop,而是增強它!常見的搭配是:

  • 存儲:Hadoop HDFS(經濟可靠的大規模存儲)
  • 計算:Spark(高速內存計算)
  • 資源管理:Hadoop YARN(高效的資源調度)

5. 處理流程對比

多次磁盤IO
Spark 優化流程
內存計算
輸入數據
Pipeline 處理
輸出結果
傳統 MapReduce 流程
Map 階段
輸入數據
寫入磁盤
Shuffle
從磁盤讀取
Reduce 階段
輸出結果

6. 為什么要學習 Spark?

  1. 行業標準:大多數大數據崗位要求掌握 Spark
  2. 處理能力:能夠處理 PB 級別數據
  3. 靈活性:支持批處理、流處理、機器學習和圖計算
  4. 生態系統:豐富的庫和活躍的社區支持
  5. 職業發展:掌握 Spark 是大數據工程師的核心技能

其實簡單來說,可以看看招聘軟件上對數據工程師的要求,大多會提到spark,所以咱的目標很明確,可惡,這里不能發表情包,不然有很多合適的表情包可以放在這

代碼示例:創建一個簡單的 Spark 應用

# 導入必要的庫
from pyspark.sql import SparkSession# 創建 SparkSession - 所有 Spark 功能的入口點
spark = SparkSession.builder \.appName("MyFirstSparkApp") \          # 設置應用名稱.config("spark.executor.memory", "2g") \  # 配置執行器內存.getOrCreate()                         # 獲取或創建會話# 打印 Spark 版本信息
print(f"Spark version: {spark.version}")# 創建一個簡單的數據集
data = [("Alice", 28), ("Bob", 35), ("Charlie", 42)]
columns = ["Name", "Age"]# 創建 DataFrame
df = spark.createDataFrame(data, columns)# 展示數據
df.show()# 執行簡單查詢
df.filter(df.Age > 30).show()# 停止 SparkSession
spark.stop()

輸出結果

Spark version: 3.3.0
+-------+---+
|   Name|Age|
+-------+---+
|  Alice| 28|
|    Bob| 35|
|Charlie| 42|
+-------+---++-------+---+
|   Name|Age|
+-------+---+
|    Bob| 35|
|Charlie| 42|
+-------+---+

只是用python舉個例子,不會python也不影響,畢竟實際工作中,應該會有界面化的軟件讓你直接寫sql,但我不想使用公司的軟件寫博客,就只能用python湊合了

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/99214.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/99214.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/99214.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

從零到一上手 Protocol Buffers用 C# 打造可演進的通訊錄

一、為什么是 Protobuf(而不是 XML/自定義字符串/.NET 二進制序列化) 在需要把結構化對象持久化或跨進程/跨語言傳輸時,常見方案各有痛點: BinaryFormatter 等 .NET 二進制序列化:對類型簽名與版本極其脆弱、體積偏大&…

計算機網絡(三)網絡層

三、網絡層網絡層是五層模型中的第三層,位于數據鏈路層和傳輸層之間。它的核心任務是實現數據包在不同網絡之間(跨網絡)的邏輯傳輸。網絡層的數據傳輸單位是數據報(Datagram)或數據包(Packet)。…

互聯網大廠Java面試實錄:從基礎到微服務全棧技術答疑

互聯網大廠Java面試實錄:從基礎到微服務全棧技術答疑 本文以電商場景為背景,展現一場互聯網大廠Java開發職位的面試過程。嚴肅的面試官與搞笑的水貨程序員謝飛機展開三輪技術問答,涵蓋Java SE、Spring Boot、數據庫、微服務、安全以及CI/CD等…

StringBuilder 深度解析:數據結構與擴容機制的底層細節

文章目錄 前言 一、數據結構:不止是簡單的字符數組 1. 核心成員變量(定義在 AbstractStringBuilder 中) 2. 構造器與初始容量 二、擴容機制:從 "不夠用" 到 "換大容器" 的全過程 步驟 1:計算…

Elasticsearch面試精講 Day 17:查詢性能調優實踐

【Elasticsearch面試精講 Day 17】查詢性能調優實踐 在“Elasticsearch面試精講”系列的第17天,我們聚焦于查詢性能調優實踐。作為全文檢索與數據分析的核心引擎,Elasticsearch的查詢性能直接影響用戶體驗和系統吞吐能力。在高并發、大數據量場景下&…

WPF 數據綁定模式詳解(TwoWay、OneWay、OneTime、OneWayToSource、Default)

在WPF中,數據綁定模式(Binding Mode)用于指定數據流的方向。常見的模式有TwoWay、OneWay、OneTime、OneWayToSource和Default。TwoWay(雙向綁定):數據從源(通常是ViewModel或數據上下文&#xf…

使用 NVIDIA Dynamo 部署 PD 分離推理服務

1 Dynamo 介紹 NVIDIA Dynamo 是一個開源的模塊化推理框架,用于在分布式環境上實現生成式 AI 模型的服務化部署。Dynamo 通過動態資源調度、智能路由、內存優化與高速數據傳輸,無縫擴展大型 GPU 集群之間的推理工作負載。 Dynamo 采用推理引擎無關的設…

答題卡識別改分項目

目錄 核心思路 分步實現與代碼解析 1. 環境準備與工具函數定義 2. 圖片預處理 3. 輪廓提取與篩選 3. 輪廓提取與篩選 4. 透視變換(矯正傾斜答題卡) 5. 閾值處理(突出填涂區域) 6. 提取選項圓圈輪廓 7. 選項輪廓排序&…

Python爬蟲實戰:研究Pandas,構建新浪網股票數據采集和分析系統

1. 系統概述 股票數據分析系統旨在通過自動化手段獲取市場數據,進行深度分析,輔助投資決策。本系統主要包含以下核心模塊: 數據爬取模塊:從新浪財經獲取股票列表、基本信息及歷史交易數據 數據處理模塊:清洗原始數據,處理缺失值與異常值,計算技術指標 分析可視化模塊:…

【C++STL】list的詳細用法和底層實現

🌟個人主頁:第七序章 🌈專欄系列:C++ 目錄 ??前言: 🌈一:介紹 🌈二:list的創建 ??基本框架 🌙節點類 🌙構造函…

AI大模型開發(多模態+提示詞)

接著之前的例子,繼續測試模型對話,今天主要測試多模態加上系統提示詞。 一.多模態 多模態方法,主要添加了對圖片的測試。 public String chatWithMessage(UserMessage userMessage){ChatResponse chatResponse qwenChatModel.chat(userMess…

Qt程序單獨運行報錯問題

Qt程序單獨運行報錯問題介紹問題原因分析解決方案(從最佳實踐到臨時方法)方法一:使用 windeployqt 工具(最推薦、最規范)方法二:臨時修改系統 PATH(適合開發調試)方法三:…

Flask學習筆記(二)--路由和變量

一、路由Flask支持兩種路由1、使用route()裝飾器將URL綁定到函數app.route(/hello)def hello_world():return hello world2、使用應用程序對象的add_url_rule()函數def hello_world():return hello worldapp.add_url_rule(/, hello, hello_world)二、變量規則Flask開發中&#…

Skywalking告警配置+簡易郵件告警應用配置(保姆級)

Skywalking告警配置簡易郵件告警應用配置前言: 前文:SkyWalking Elasticsearch8 容器化部署指南:國內鏡像加速與生產級調優_skywalkinges-CSDN博客 ? SKywalking Agent配置Oracle監控插件安裝指南-CSDN博客 Skywalking版本:V10.…

無人機如何實現圖傳:從原理到實戰的全景解讀

無人機圖傳的工作不是簡單地把鏡頭的數據直接“丟”到一個屏幕上,而是一個由編碼、傳輸、解碼三段組成的系統。首先是視頻編碼:攝像頭采集的原始畫面通常需要經過編解碼器壓縮,常見標準包括H.264、H.265和VP9等。壓縮的目的是減少數據量&…

AS32S601在軌重構(OTA)方案的優化與分析

摘要在軌重構(OTA)技術因其在航天、工業控制、物聯網等領域的高可靠性和持續服務需求而備受關注。本文以國科安芯推出的AS32S601芯片為研究對象,深入分析其OTA方案的設計原理、技術細節及優化策略,并結合芯片的硬件特性&#xff0…

修復Android studio的adb無法連接手機問題

復制下面的內容到一個文本txt里面然后把里面的Android studio路徑和sdk路徑改成你自己的,然后改成把.txt改成bat 右鍵管理員運行 echo off REM Deep Fix for "Couldnt terminate the existing process" error REM This script will completely reset ADB …

css優化都有哪些優化方案

CSS 優化其實可以分成幾個層面:性能優化、可維護性優化、兼容性優化以及用戶體驗優化。這里我幫你梳理一份比較系統的 CSS 優化方案清單,方便你參考:🔹 一、加載性能優化減少 CSS 文件體積壓縮 CSS(去掉空格、換行、注…

vue,uniapp 實現卷簾對比效果

需求&#xff1a;兩張圖重疊放在一起&#xff0c;拖動分割線實現卷簾對比效果&#xff0c;如圖一、vue2代碼 <template><div class"main"><div class"img-comparison" mousedown"startSlide"><img class"before"…

【筆記】空氣彈簧概述、剛度調節原理

參考鏈接&#xff1a;汽車底盤空氣懸架關鍵零部件之空氣彈簧 1.概述 汽車空氣彈簧&#xff08;Air Spring&#xff09;是一種以“壓縮空氣”作為彈性介質的懸架元件&#xff0c;用來取代傳統鋼制螺旋彈簧或鋼板彈簧。它在乘用車、客車、重卡及軌道交通上越來越普及&#xff0…