Spark使用Python開發和RDD

来源:https://www.cnblogs.com/paopaoT/archive/2023/06/29/17515222.html
-Advertisement-
Play Games

# 使用PySpark ## 配置python環境 在所有節點上按照python3,版本必須是python3.6及以上版本 ```Shell yum install -y python3 ``` 修改所有節點的環境變數 ```Shell export JAVA_HOME=/usr/local/jdk ...


使用PySpark

配置python環境

在所有節點上按照python3,版本必須是python3.6及以上版本

yum install -y python3

修改所有節點的環境變數

export JAVA_HOME=/usr/local/jdk1.8.0_251
export PYSPARK_PYTHON=python3
export HADOOP_HOME=/bigdata/hadoop-3.2.1
export HADOOP_CONF_DIR=/bigdata/hadoop-3.2.1/etc/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

使用pyspark shell

/bigdata/spark-3.2.3-bin-hadoop3.2/bin/pyspark \
--master spark://node-1.51doit.cn:7077 \
--executor-memory 1g --total-executor-cores 10

在pyspark shell使用python編寫wordcount

sc.textFile("hdfs://node-1.51doit.cn:8020/data/wc").flatMap(lambda line: line.split(' ')).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a + b).sortBy(lambda t: t[1], False).saveAsTextFile('hdfs://node-1.51doit.cn:8020/out01')

在pycharm中使用python編寫wordcount

from pyspark import SparkConf, SparkContext

if __name__ == '__main__':
    conf = SparkConf().setAppName('WordCount').setMaster('local[*]')
    sc = SparkContext(conf=conf)
    lines = sc.textFile('file:///Users/star/Desktop/data.txt')
    words = lines.flatMap(lambda line: line.split(' '))
    wordAndOne = words.map(lambda word: (word, 1))
    reduced = wordAndOne.reduceByKey(lambda x, y: x + y)
    result = reduced.sortBy(lambda t: t[1], False)
    print(result.collect())

RDD

RDD的全稱為Resilient Distributed Dataset,是一個彈性、可複原的分散式數據集,是Spark中最基本的抽象,是一個不可變的、有多個分區的、可以並行計算的集合。RDD中並不裝真正要計算的數據,而裝的是描述信息,描述以後從哪裡讀取數據,調用了用什麼方法,傳入了什麼函數,以及依賴關係等。

RDD的特點

• 有一系列連續的分區:分區編號從0開始,分區的數量決定了對應階段Task的並行度
• 有一個函數作用在每個輸入切片上或對應的分區上: 每一個分區都會生成一個Task,對該分區的數據進行計算,這個函數就是具體的計算邏輯
• RDD和RDD之間存在一系列依賴關係:RDD調用Transformation後會生成一個新的RDD,子RDD會記錄父RDD的依賴關係,包括寬依賴(有shuffle)和窄依賴(沒有shuffle)
• (可選的)K-V的RDD在Shuffle會有分區器,預設使用HashPartitioner
• (可選的)如果從HDFS中讀取數據,會有一個最優位置:spark在調度任務之前會讀取NameNode的元數據信息,獲取數據的位置,移動計算而不是移動數據,這樣可以提高計算效率。
image

RDD的運算元(方法)分類

• Transformation:即轉換運算元,調用轉換運算元會生成一個新的RDD,Transformation是Lazy的,不會觸發job執行。

• Action:行動運算元,調用行動運算元會觸發job執行,本質上是調用了sc.runJob方法,該方法從最後一個RDD,根據其依賴關係,從後往前,劃分Stage,生成TaskSet。

創建RDD的方法

• 從HDFS指定的目錄據創建RDD

val lines: RDD[String] = sc.textFile("hdfs://node-1.51doit.cn:9000/log")

• 通過並行化方式,將Driver端的集合轉成RDD

 val rdd1: RDD[Int] = sc.parallelize(Array(1,2,3,4,5,6,7,8,9))

查看RDD的分區數量

val rdd1: RDD[Int] = sc.parallelize(Array(1,2,3,4,5,6,7,8,9))
rdd1.partitions.length

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • Go介面壓測的第三方包,一個很好用的負載測試工具。**vegeta測試工具組件(可執行文件)**支持linux以及mac系統,這裡指的是通過終端命令行進行進行測試,不需要從代碼層面使用這個工具的時候支持linux以及mac系統,在windows上可能會出現問題。但是通過**vegeta包代碼執行** ...
  • > [MaterialSkin.2](https://www.nuget.org/packages/MaterialSkin.2 "MaterialSkin.2") 控制項包是在 [MaterialSkin](https://github.com/IgnaceMaes/MaterialSkin "Ma ...
  • ## 介紹 1. HttpLogging 是 .NET 6 新加入的一個框架內置的中間件 2. 可以提供以下信息的日誌: - HTTP請求信息 - Common properties - Headers - Body - HTTP響應信息 ## 使用 添加 ```csharp builder.Ser ...
  • # 創建Avalonia 模板項目-基礎 Avalonia是一個跨平臺的.NET框架,用於構建漂亮、現代的圖形用戶界面(GUI)。使用Avalonia,您可以從單個代碼庫創建適用於Windows、macOS、 Linux、iOS、Android和Web Assembly的原生應用程式。 本文部分內容 ...
  • 繼上篇:Taurus .Net Core 微服務開源框架:Admin 插件【2】 - 系統環境信息管理,本篇繼續介紹下一個內容:系統指標節點... ...
  • 在使用Quark-n開發板時,想打開瀏覽器網上衝浪,但是出現了下麵的情況。 說明我沒有這個軟體,那就安裝一手。 1、先執行軟體更新,在終端中敲入指令 sudo apt-get update 2、更新Firefox sudo apt install firefox 然後蹦出來這個畫面: apt使用出錯 ...
  • CentOS 7 下/etc/ssh/sshd_config 文件詳解 SSH由客戶端和服務端的軟體組成,在客戶端可以使用的軟體有SecureCRT、putty、Xshell等,而在伺服器端運行的是一個sshd的服務,通過使用SSH,可以把所有傳輸的數據進行加密,而且也能夠防止dns和IP欺騙,此外 ...
  • # 痞子衡嵌入式半月刊: 第 78 期 ![](http://henjay724.com/image/cnblogs/pzh_mcu_bi_weekly.PNG) 這裡分享嵌入式領域有用有趣的項目/工具以及一些熱點新聞,農曆年分二十四節氣,希望在每個交節之日準時發佈一期。 本期刊是開源項目(GitH ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...