Apache Spark - 用于大規模數據分析的統一引擎

Apache Spark - 用于大規模數據分析的統一引擎

  • 下載
  • 運行示例和 Shell
    • 使用 Spark Connect 在 Anywhere 上運行 Spark 客戶端應用程序
  • 在集群上啟動
  • 從這里去哪里
  • 使用 Spark Shell 進行交互式分析
    • 基本
    • 有關數據集作的更多信息
    • 緩存
  • 自包含應用程序
  • 從這里去哪里

Apache Spark 是用于大規模數據處理的統一分析引擎。 它提供 Java、Scala、Python 和 R 的高級 API, 以及支持常規執行圖的優化引擎。 它還支持一組豐富的高級工具,包括用于 SQL 和結構化數據處理的 Spark SQL、用于 pandas 工作負載 的 Spark 上的 pandas API、用于機器學習的 MLlib、用于圖形處理的 GraphX、 以及 Structured Streaming,用于增量計算和流處理。

下載

從項目網站的下載頁面獲取 Spark。本文檔適用于 Spark 版本 3.5.5。Spark 將 Hadoop 的客戶端庫用于 HDFS 和 YARN。下載內容已針對少數流行的 Hadoop 版本進行了預打包。 用戶還可以下載“Hadoop 免費”二進制文件,并通過擴充 Spark 的類路徑,使用任何 Hadoop 版本運行 Spark。 Scala 和 Java 用戶可以使用其 Maven 坐標將 Spark 包含在其項目中,Python 用戶可以從 PyPI 安裝 Spark。

如果您想從 source,請訪問 Building Spark。

Spark 可以在 Windows 和類 UNIX 系統(例如 Linux、Mac OS)上運行,并且它應該可以在運行受支持的 Java 版本的任何平臺上運行。這應包括 x86_64 和 ARM64 上的 JVM。在一臺機器上本地運行很容易 - 您只需在 system 上安裝,或者使用指向 Java 安裝的環境變量。java``PATH``JAVA_HOME

Spark 可在 Java 8/11/17、Scala 2.12/2.13、Python 3.8+ 和 R 3.5+ 上運行。 版本 8u371 之前的 Java 8 支持從 Spark 3.5.0 開始棄用。 使用 Scala API 時,應用程序必須使用編譯 Spark 的相同 Scala 版本。 例如,使用 Scala 2.13 時,使用為 2.13 編譯的 Spark,并編譯為 Scala 2.13 的代碼/應用程序。

對于 Java 11,需要對 Apache Arrow 庫進行設置。這可以防止 Apache Arrow 在內部使用 Netty 時出現錯誤。-Dio.netty.tryReflectionSetAccessible=true``java.lang.UnsupportedOperationException: sun.misc.Unsafe or java.nio.DirectByteBuffer.(long, int) not available

運行示例和 Shell

Spark 附帶了幾個示例程序。Python、Scala、Java 和 R 示例位于目錄中。examples/src/main

要在 Python 解釋器中以交互方式運行 Spark,請使用:bin/pyspark

./bin/pyspark --master "local[2]"

以 Python 提供示例應用程序。例如:

./bin/spark-submit examples/src/main/python/pi.py 10

要運行 Scala 或 Java 示例程序之一,請在頂級 Spark 目錄中使用。(在幕后,這個 調用更通用的 spark-submit 腳本 啟動應用程序)。例如bin/run-example <class> [params]

./bin/run-example SparkPi 10

您還可以通過 Scala shell 的修改版本以交互方式運行 Spark。這是一個 學習框架的好方法。

./bin/spark-shell --master "local[2]"

該選項指定分布式集群的主 URL,或運行 本地使用 1 個線程,或者使用 N 個線程在本地運行。您應該從 using for testing 開始。有關選項的完整列表,請使用選項運行 Spark shell。--master``local``local[N]``local``--help

從版本 1.4 開始,Spark 提供了一個 R API(僅包含數據幀 API)。 要在 R 解釋器中以交互方式運行 Spark,請使用:bin/sparkR

./bin/sparkR --master "local[2]"

R 中還提供了示例應用程序。例如:

./bin/spark-submit examples/src/main/r/dataframe.R

使用 Spark Connect 在 Anywhere 上運行 Spark 客戶端應用程序

Spark Connect 是 Spark 3.4 中引入的一種新的客戶端-服務器體系結構,用于分離 Spark 客戶端應用程序,并允許遠程連接到 Spark 集群。兩者之間的分離 客戶端和服務器允許從任何地方利用 Spark 及其開放式生態系統,嵌入式 在任何應用程序中。在 Spark 3.4 中,Spark Connect 為 PySpark 和 Scala 中的數據幀/數據集 API 支持。

要了解有關 Spark Connect 及其使用方法的更多信息,請參閱 Spark Connect 概述。

在集群上啟動

Spark 集群模式概述介紹了在集群上運行的關鍵概念。 Spark 既可以單獨運行,也可以在多個現有集群管理器上運行。它目前提供了幾個 部署選項:

  • 獨立部署模式:在私有集群上部署 Spark 的最簡單方法
  • Apache Mesos (已棄用)
  • Hadoop YARN
  • Kubernetes (簡體中文)

從這里去哪里

編程指南:

  • 快速入門:Spark API 快速介紹;從這里開始!
  • RDD 編程指南:Spark 基礎知識概述 - RDD (核心但舊 API)、累加器和廣播變量
  • Spark SQL、數據集和數據幀:使用關系查詢處理結構化數據(比 RDD 更新的 API)
  • 結構化流式處理:使用關系查詢處理結構化數據流(使用 Datasets 和 DataFrames,比 DStreams 更新的 API)
  • Spark Streaming:使用 DStreams(舊 API)處理數據流
  • MLlib:應用機器學習算法
  • GraphX:處理圖形
  • SparkR:在 R 中使用 Spark 處理數據
  • PySpark:在 Python 中使用 Spark 處理數據
  • Spark SQL CLI:在命令行上使用 SQL 處理數據

API 文檔:

  • Spark Scala API (Scaladoc)
  • Spark Java API (Javadoc)
  • Spark Python API (Sphinx)
  • Spark R API (Roxygen2)
  • Spark SQL,內置函數 (MkDocs)

部署指南:

  • Cluster Overview:介紹在集群上運行時的概念和構成
  • 提交應用程序:打包和部署應用程序
  • 部署模式:
    • Amazon EC2:可讓您在大約 5 分鐘內在 EC2 上啟動集群的腳本
    • 獨立部署模式:無需第三方集群管理器即可快速啟動獨立集群
    • Mesos:使用 Apache Mesos 部署私有集群
    • YARN:在 Hadoop NextGen (YARN) 上部署 Spark
    • Kubernetes:在 Kubernetes 上部署 Spark

其他文件:

  • 配置:通過其配置系統自定義 Spark
  • 監控:跟蹤應用程序的行為
  • 調優指南:優化性能和內存使用的最佳實踐
  • 作業調度:在 Spark 應用程序之間和內部調度資源
  • 安全性:Spark 安全支持
  • 硬件配置:集群硬件的建議
  • 與其他存儲系統集成:
    • 云基礎設施
    • OpenStack Swift
  • 遷移指南:Spark組件遷移指南
  • 構建 Spark:使用 Maven 系統構建 Spark
  • 為 Spark 做貢獻
  • 第三方項目:相關的第三方 Spark 項目

外部資源:

  • Spark 主頁
  • Spark 社區資源,包括本地聚會
  • StackOverflow 標簽 apache-spark
  • 郵件列表:在此處詢問有關 Spark 的問題
  • AMP Camps:加州大學伯克利分校的一系列訓練營,包括講座和 關于 Spark、Spark Streaming、Mesos 等的練習。[視頻、](https://www.youtube.com/user/BerkeleyAMPLab/search?query=amp camp) 可免費在線獲取。
  • 代碼示例:Spark 的子文件夾(Scala、Java、Python、Rexamples)

快速入門 - Spark 3.5.5 文檔

Apache spark 下載鏡像

使用 Spark Shell 進行交互式分析

基本

./bin/spark-shell
scala> val textFile = spark.read.textFile("README.md")
textFile: org.apache.spark.sql.Dataset[String] = [value: string]
scala> textFile.count() // Number of items in this Dataset
res0: Long = 126 // May be different from yours as README.md will change over time, similar to other outputsscala> textFile.first() // First item in this Dataset
res1: String = # Apache Spark
scala> val linesWithSpark = textFile.filter(line => line.contains("Spark"))
linesWithSpark: org.apache.spark.sql.Dataset[String] = [value: string]
scala> textFile.filter(line => line.contains("Spark")).count() // How many lines contain "Spark"?
res3: Long = 15

有關數據集作的更多信息

scala> textFile.map(line => line.split(" ").size).reduce((a, b) => if (a > b) a else b)
res4: Int = 15
scala> import java.lang.Math
import java.lang.Mathscala> textFile.map(line => line.split(" ").size).reduce((a, b) => Math.max(a, b))
res5: Int = 15
scala> val wordCounts = textFile.flatMap(line => line.split(" ")).groupByKey(identity).count()
wordCounts: org.apache.spark.sql.Dataset[(String, Long)] = [value: string, count(1): bigint]
scala> wordCounts.collect()
res6: Array[(String, Int)] = Array((means,1), (under,2), (this,3), (Because,1), (Python,2), (agree,1), (cluster.,1), ...)

緩存

scala> linesWithSpark.cache()
res7: linesWithSpark.type = [value: string]scala> linesWithSpark.count()
res8: Long = 15scala> linesWithSpark.count()
res9: Long = 15

訪問:Spark shell - Spark Jobs
在這里插入圖片描述

自包含應用程序

此示例將使用 Maven 編譯應用程序 JAR,但任何類似的構建系統都可以使用。

我們將創建一個非常簡單的 Spark 應用程序:SimpleApp.java

/*** @author heliming* @version 1.0* @date 2025/3/24-22:18* @description TODO*/
/* SimpleApp.java */
import org.apache.spark.api.java.function.FilterFunction;
import org.apache.spark.sql.SparkSession;
import org.apache.spark.sql.Dataset;public class SimpleApp {public static void main(String[] args) {System.out.println(123);String logFile = "D:\\spark-3.4.4-bin-hadoop3\\README.md"; // Should be some file on your systemSparkSession spark = SparkSession.builder().appName("Simple Application").getOrCreate();Dataset<String> logData = spark.read().textFile(logFile).cache();long numAs = logData.filter((FilterFunction<String>) s -> s.contains("a")).count();long numBs = logData.filter((FilterFunction<String>) s -> s.contains("b")).count();System.out.println("Lines with a: " + numAs + ", lines with b: " + numBs);spark.stop();}
}

pom.xml

<?xml version="1.0" encoding="UTF-8"?>
<project><groupId>edu.berkeley</groupId><artifactId>simple-project</artifactId><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>8</source><target>8</target></configuration></plugin></plugins></build><modelVersion>4.0.0</modelVersion><name>Simple Project</name><packaging>jar</packaging><version>1.0</version><dependencies><dependency> <!-- Spark dependency --><groupId>org.apache.spark</groupId><artifactId>spark-sql_2.12</artifactId><version>3.5.5</version><scope>provided</scope></dependency></dependencies>
</project>

我們根據規范的 Maven 目錄結構對這些文件進行布局:

$ find .
./pom.xml
./src
./src/main
./src/main/java
./src/main/java/SimpleApp.java

現在,我們可以使用 Maven 打包應用程序并使用 ../bin/spark-submit

# Package a JAR containing your application
$ mvn package
...
[INFO] Building jar: {..}/{..}/target/simple-project-1.0.jar# Use spark-submit to run your application
$ YOUR_SPARK_HOME/bin/spark-submit \--class "SimpleApp" \--master local[4] \target/simple-project-1.0.jar
...
Lines with a: 72, lines with b: 39

我打包復制到YOUR_SPARK_HOME下了,執行的

bin/spark-submit.cmd --class "SimpleApp" --master local[4] simple-project-1.0.jar

從這里去哪里

恭喜您運行了您的第一個 Spark 應用程序!

  • 有關 API 的深入概述,請從 RDD 編程指南和 SQL 編程指南開始,或者查看其他組件的“編程指南”菜單。
  • 要在集群上運行應用程序,請前往部署概述。
  • 最后,Spark 在目錄中包含幾個示例 (Scala、Java、Python、R)。 您可以按如下方式運行它們:examples
# For Scala and Java, use run-example:
./bin/run-example SparkPi# For Python examples, use spark-submit directly:
./bin/spark-submit examples/src/main/python/pi.py# For R examples, use spark-submit directly:
./bin/spark-submit examples/src/main/r/dataframe.R

配置參數 - Spark 3.5.5 Documentation

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

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

相關文章

餐飲管理系統的設計與實現(代碼+數據庫+LW)

摘 要 互聯網發展至今&#xff0c;無論是其理論還是技術都已經成熟&#xff0c;而且它廣泛參與在社會中的方方面面。它讓信息都可以通過網絡傳播&#xff0c;搭配信息管理工具可以很好地為人們提供服務。針對信息管理混亂&#xff0c;出錯率高&#xff0c;信息安全性差&#…

【C#】Winform調用NModbus實現Modbus TCP 主站通訊

一、前言 Modbus是一種串行通信協議&#xff0c;是工業領域全球最流行的協議之一。 1.1 環境 系統&#xff1a;Win11 工具&#xff1a;Visual Studio 2022 .Net 版本&#xff1a;.Net Framework4.6.0 依賴庫&#xff1a;NModbus 3.0.81 1.2 協議類型 Modbus RTU&#xff1a;一…

【leetcode題解】貪心算法

目錄 貪心算法 檸檬水找零 將數組和減半的最少操作次數 最大數 擺動序列 最長遞增子序列 遞增的三元子序列 最長連續遞增序列 買賣股票的最佳時機 買賣股票的最佳時機 II K 次取反后最大化的數組和 按身高排序 優勢洗牌 最長回文串 增減字符串匹配 分發餅干 最…

Langchain4J框架相關面試題

以下是關于Langchain4J框架的面試題目及答案 ### Langchain4J基礎概念類 1. **Langchain4J框架是什么&#xff1f;它的核心功能有哪些&#xff1f;** Langchain4J是一個用于構建語言模型應用的Java框架&#xff0c;它為開發者提供了一套簡潔高效的API&#xff0c;使得在Jav…

Apache Doris

Apache Doris介紹 Apache Doris 是一個基于 MPP 架構的高性能、實時的分析型數據庫&#xff0c;以極速易用的特點被人們所熟知&#xff0c;僅需亞秒級響應時間即可返回海量數據下的查詢結果&#xff0c;不僅可以支持高并發的點查詢場景&#xff0c;也能支持高吞吐的復雜分析場…

VLAN間通信

目錄 第一步&#xff1a;配vlan 第二步&#xff1a;配置核心vlanif,MAC地址信息。 第三步&#xff1a;ospf協議 三層交換機&#xff08;匯聚層&#xff09;: 對于交換機、路由器、防火墻等網絡設備而言&#xff0c;接口類型一般存在兩種&#xff1a;二層接口&#xff0c;三…

LeetCode熱題100精講——Top2:字母異位詞分組【哈希】

你好&#xff0c;我是安然無虞。 文章目錄 題目背景字母異位詞分組C解法Python解法 題目背景 如果大家對于 哈希 類型的概念并不熟悉, 可以先看我之前為此專門寫的算法詳解: 藍橋杯算法競賽系列第九章巧解哈希題&#xff0c;用這3種數據類型足矣 字母異位詞分組 題目鏈接&am…

基于python+django的圖書借閱網站-圖書借閱管理系統源碼+運行步驟

該系統是基于pythondjango開發的在線圖書借閱管理系統。系統適合場景&#xff1a;大學生、課程作業、系統設計、畢業設計。 演示地址 前臺地址&#xff1a; http://book.gitapp.cn 后臺地址&#xff1a;http://book.gitapp.cn/#/admin 后臺管理帳號&#xff1a; 用戶名&…

uni-app集成保利威直播、點播SDK經驗FQ(二)|小程序直播/APP直播開發適用

通過uniapp集成保利威直播、點播SDK來開發小程序/APP的視頻直播能力&#xff0c;在實際開發中可能會遇到的疑問和解決方案&#xff0c;下篇。更多疑問請咨詢19924784795。 1.ios不能后臺掛起uniapp插件 ios端使用后臺音頻播放和畫中畫功能&#xff0c;沒有在 manifest.json 進…

數據庫三級填空+應用題(1)

填空 35【答案】TOP 3 WITH TIES 【解析】希望選出商品數量最多的前3類商品&#xff0c;并獲得相應的商品類別和數量。with ties一般是和Top 、 order by相結合使用,表示包括與最后一行order by后面的參數取值并列的結果。 36在SQL Server 2008中&#xff0c;每個數據頁可存儲8…

前端(vue)學習筆記(CLASS 5):自定義指令插槽路由

1、自定義指令 內置指令&#xff1a;內部提供的&#xff0c;每個指令都有自己各自獨立的功能 自定義指令&#xff1a;自己定義的指令&#xff0c;可以封裝一些dom操作&#xff0c;擴展額外功能 全局注冊-語法 例如&#xff0c;當頁面加載時&#xff0c;讓元素獲得焦點 Vue.…

【redis】事務詳解,相關命令multi、exec、discard 與 watch 的原理

文章目錄 什么是事務原子性一致性持久性隔離性 優勢與 MySQL 對比用處 事務相關命令開啟事務——MULTI執行事務——EXEC放棄當前事務——DISCARD監控某個 key——WATCH作用場景使用方法實現原理 事務總結 什么是事務 MySQL 事務&#xff1a; 原子性&#xff1a;把多個操作&am…

【Java SE】單例設計模式

參考筆記&#xff1a;深入理解Java設計模式&#xff1a;單例模式及其餓漢式與懶漢式的對比,-CSDN博客 目錄 1.什么是設計模式 2.經典設計模式 3.單例設計模式&#xff08;static屬性/方法經典使用場景 &#xff09; 3.1 餓漢式單例模式 3.2 懶漢式單例模式 4.補充 1.什么…

【day2】數據結構刷題 棧

一 有效的括號 給定一個只包括 (&#xff0c;)&#xff0c;{&#xff0c;}&#xff0c;[&#xff0c;] 的字符串 s &#xff0c;判斷字符串是否有效。 有效字符串需滿足&#xff1a; 左括號必須用相同類型的右括號閉合。左括號必須以正確的順序閉合。每個右括號都有一個對應的…

藍橋杯 勁舞團

問題描述 小藍最近迷上了一款名為 “勁舞團” 的游戲。 在游戲中&#xff0c;只要按照給出的鍵位提示依次按出對應的鍵位&#xff0c;游戲人物便可以跟隨節奏跳舞。 對于連續的 K 次正確敲擊&#xff0c;如果任意連續兩次敲擊之間的時間間隔都小于等于 1 秒&#xff08;即 1…

數據庫數值函數詳解

各類資料學習下載合集 ??https://pan.quark.cn/s/8c91ccb5a474?? 數值函數是數據庫中用于處理數值數據的函數,可以用于執行各種數學運算、統計計算等。數值函數在數據分析及處理時非常重要,能夠幫助我們進行數據的聚合、計算和轉換。在本篇博客中,我們將詳細介紹常用的…

關于金融開發領域的一些專業知識總結

目錄 1. 交易生命周期 1.1 證券交易所 1.1.1 交易前 1) 訂單生成&#xff08;Order Generation&#xff09; 2) 訂單管理&#xff08;Order Management&#xff09; 1.1.2 交易執行 3) 交易匹配&#xff08;Trade Matching&#xff09; 1.1.3 交易后 4) 交易確認&…

Leetcode 3495. Minimum Operations to Make Array Elements Zero

Leetcode 3495. Minimum Operations to Make Array Elements Zero 1. 解題思路2. 代碼實現 題目鏈接&#xff1a;3495. Minimum Operations to Make Array Elements Zero 1. 解題思路 這一題的話核心就是統計對任意自然數 n n n&#xff0c;從 1 1 1到 n n n當中所有的數字對…

Vue 3 + TypeScript 實現視頻播放與字幕功能:集成西瓜播放器 XGPlayer

文章目錄 1. 前言&#xff1a;視頻播放器的重要性2. 準備工作2.1 安裝 Vue 3 項目2.2 安裝 XGPlayer 和相關依賴 3. 實現視頻播放3.1 初始化 XGPlayer 4. 添加字幕功能4.1 配置字幕 4.2 字幕文件格式5. 增加交互性完整的代碼&#xff0c;僅供參考6. 總結 在現代 Web 開發中&…

MacOS安裝 nextcloud 的 Virtual File System

需求 在Mac上安裝next cloud實現類似 OneDrive 那樣&#xff0c;文件直接保存在服務器&#xff0c;需要再下載到本地。 方法 在 官網下載Download for desktop&#xff0c;注意要下對版本&#xff0c;千萬別下 Mac OS默認的那個。 安裝了登錄在配置過程中千萬不要設置任何同…