spark的使用

spark的使用

spark是一款分布式的計算框架,用于調度成百上千的服務器集群。

安裝pyspark

# os.environ['PYSPARK_PYTHON']='解析器路徑' pyspark_python配置解析器路徑
import os
os.environ['PYSPARK_PYTHON']="D:/dev/python/python3.11.4/python.exe"
pip install pyspark # 原始國外安裝
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspark  #網址安裝

java安裝

前置安裝軟件java包
java官網下載地址
一鍵下一步安裝,配置環境變量
首先創建一個JAVA_HOME的全局變量然后在path中通過%%引入執行下面的bin 路徑%JAVA_HOME%\bin

在這里插入圖片描述
在這里插入圖片描述
執行成功

from pyspark import SparkConf,SparkContext# 創建sparkConf 類對象
conf= SparkConf().setMaster("local[*]").setAppName("test_spark_app")
# 創建sparkConf類對象創建sparkContext對象
sc =SparkContext(conf=conf)
# 打印pySpark的運行腳本
print(sc.version)
# 停止sparkContext對象的運行(停止pySpark程序)
sc.stop()

PySpark的數據計算,都是基于RDD對象來進行的,RDD對象內置豐富的:成員方法(算子)

map算子

功能:map算子,是將RDD的數據一條條處理,處理的邏輯基于map算子中接收的處理函數,返回新的RDD語法:
在這里插入圖片描述

# 簡單執行map將數據乘以10返回,如果不引入python解析器的路徑引入就會報錯,
from pyspark import SparkConf, SparkContext
# 指定spark的python解析器路徑
import os
os.environ['PYSPARK_PYTHON']="D:/dev/python/python3.11.4/python.exe"
# 創建sparkConf 類對象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")
# 創建sparkConf類對象創建sparkContext對象
sc = SparkContext(conf=conf)rdd = sc.parallelize([1, 2, 3, 4, 5, 6])def func(data):return data * 10# map傳入一個參數有返回值,是函數或者是值
rdd2 = rdd.map(func)
print(rdd2.collect())

在這里插入圖片描述

flatMap

flatMapmap差不多就是在最后做了一個解除嵌套的功能

from pyspark import SparkConf, SparkContext
import os
os.environ['PYSPARK_PYTHON']="D:/dev/python/python3.11.4/python.exe"
# 創建sparkConf 類對象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")
# 創建sparkConf類對象創建sparkContext對象
sc = SparkContext(conf=conf)rdd = sc.parallelize(['中石科技 時間還復活甲 如今房價','慰問金 咖啡機 姐夫哥','格很高 客服管家二惡烷 可歸結為'])rdd2 = rdd.flatMap(lambda x:x.split(' '))print(rdd2.collect())

在這里插入圖片描述
map的結果
在這里插入圖片描述

reduceByKey

reduceByKey對數據進行分組可以兩兩計算

from pyspark import SparkConf, SparkContext
import osos.environ['PYSPARK_PYTHON'] = "D:/dev/python/python3.11.4/python.exe"
# 創建sparkConf 類對象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark_app")
# 創建sparkConf類對象創建sparkContext對象
sc = SparkContext(conf=conf)rdd = sc.parallelize([('男', 11), ('男', 22), ('女', 21), ('男', 31), ('女', 99)])
# 把男女進行分組value值進行計算
rdd2 = rdd.reduceByKey(lambda a, b:a+b)print(rdd2.collect()) # [('女', 120), ('男', 64)]

reduce

與reduce的區別就是沒有進行分組

take

取出前幾個數據

...
rdd = sc.parallelize([1,2,3,4,5]).take(3)  # [1,2,3]

count

計算rdd中的數據個數

filter

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']='D:/dev/python/python3.11.4/python.exe'conf=SparkConf().setMaster('local[*]').setAppName('test_spark')
sc=SparkContext(conf=conf)rdd=sc.parallelize([1,2,3,4,5])rdd2=rdd.filter(lambda a:a%2==0) 
print(rdd2.collect()) # [2,4]

distinct

進行數據去重

from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON']='D:/dev/python/python3.11.4/python.exe'conf=SparkConf().setMaster('local[*]').setAppName('test_spark')
sc=SparkContext(conf=conf)add= sc.parallelize([1,2,3,4,5,6,73,3,2,4,56,3,5])add2=add.distinct()
print(add2.collect()) # [56, 1, 73, 2, 3, 4, 5, 6]

sortBy排序

from pyspark import SparkConf, SparkContext
import osos.environ['PYSPARK_PYTHON'] = 'D:/dev/python/python3.11.4/python.exe'conf = SparkConf().setMaster('local[*]').setAppName('test_spark')
sc = SparkContext(conf=conf)add = sc.textFile('D:/wordText.txt')word_rdd = add.flatMap(lambda x: x.split(' '))
word_with_rdd = word_rdd.map(lambda word: (word, 1))
result_rdd =word_with_rdd.reduceByKey(lambda a,b:a+b)
result_num=result_rdd.sortBy(lambda x:x[1],ascending=False,numPartitions=1) # 1.根據什么排序,2.True 升序 False降序 3.分布式分區
print(result_num.collect())

collect

將rdd內容變成list,從而就可以打印出來

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

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

相關文章

喜盈門、夢百合競相入局,智能床墊起風了

配圖來自Canva可畫 現代人的生活壓力普遍大,熬夜、失眠是常有的事,提高睡眠質量十分的重要。近些年來,市面上出現了許多輔助睡眠的產品,比如香薰、褪黑素、蒸汽眼罩、降噪耳塞、助眠枕、睡眠監測app等助眠神器。可以說為了睡個好…

【CLion + ROS2】在 clion 中編譯調試 ros2 package

目錄 0 背景1. 命令行編譯 ros2 package2. 使用 clion 打開 ros2 工程3. 使用 clion 編譯整個 ros2 工程3.1 使用 clion 的 external tool 配置 colcon build3.2 開始編譯 dev_ws 工程3.3 編譯結果: 4. 調試單獨的 ros2 package4.1 創建 ros2 package 的獨立的 colc…

【Git】版本控制器詳解之git的概念和基本使用

版本控制器git 初始Gitgit的安裝git的基本使用初始化本地倉庫配置本地倉庫三區協作添加---add修改文件--status|diff版本回退--reset撤銷修改刪除文件 初始Git 為了能夠更?便我們管理不同版本的?件,便有了版本控制器。所謂的版本控制器,就是?個可以記…

yolo源碼注釋2——數據集配置文件

代碼基于yolov5 v6.0 目錄: yolo源碼注釋1——文件結構yolo源碼注釋2——數據集配置文件yolo源碼注釋3——模型配置文件yolo源碼注釋4——yolo-py 數據集配置文件一般放在 data 文件夾下的 XXX.yaml 文件中,格式如下: path: # 數據集存放路…

基于ssm+vue的新能源汽車在線租賃管理系統源碼和論文PPT

基于ssmvue的新能源汽車在線租賃管理系統源碼和論文PPT010 開發環境: 開發工具:idea 數據庫mysql5.7(mysql5.7最佳) 數據庫鏈接工具:navcat,小海豚等 開發技術:java ssm tomcat8.5 摘 要 隨著科學技術的飛速發展&#xff0…

Ajax及前端工程化

Ajax:異步的js與xml。 作用: 1、通過ajax給服務器發送數據,并獲得其響應的數據。 2、可以在不更新整個網頁的情況下,與服務器交換數據并更新部分網頁的技術。 一、同步與異步 二、原生Ajax 1、準備數據地址 2、創建XMLHttpReq…

SCSS的基本用法

1、聲明變量 $ 聲明變量的符號 $ 下面這張圖左半部分是scss的語法,右半部分是編譯后的css。(整篇文章皆是如此) 2、默認變量 !default sass 的默認變量僅需要在值后面加上 !default 即可。 如果分配給變量的值后面添加了 !default 標志…

Qt 雜項(Qwt、樣式等)

Qt隱藏窗口邊框 this->setWindowFlags(Qt::FramelessWindowHint);Qt模態框 this->setWindowModality(Qt::ApplicationModal);QLable隱藏border 代碼中設置 lable->setStyleSheet("border:0px");或者UI中直接設置樣式:“border:0px” Qwt開源…

JS實現樹形結構、一維數組以及map之間的轉換

const treeData[ {id:1, name:中國, children:[ {id:11,name:河南省,children:[{id:111,name:南陽市,children:[{id:1111,name:淅川縣,children:null}]},{id:112,name:鄭州市,children:[{id:1121,name:中牟縣,children:null}]}] }, {id:22,name:廣東省,children:[{id:221,name:…

c++中的多態

文章目錄 1.多態的概念1.1概念 2.多態的定義及實現2.1多態的構成條件2.2虛函數2.3虛函數的重寫2.4 C11 override 和 final2.5 重載、覆蓋(重寫)、隱藏(重定義)的對比 3. 抽象類3.1概念3.2接口繼承和實現繼承 4.多態的原理4.1虛函數表4.2多態原理分析4.3 動態綁定與靜態綁定 5.單…

學習筆記整理-面向對象-03-構造函數

一、構造函數 1. 用new調用函數的四步走 new 函數();JS規定,使用new操作符調用函數會進行"四步走": 函數體內會自動創建出一個空白對象函數的上下文(this)會指向這個對象函數體內的語句會執行函數會自動返回上下文對象,即使函數沒…

HDMI接口的PCB布局布線要求

高清多媒體接口(High Definition Multimedia Interface),簡稱:HDMI,是一種全數字化視頻和聲音發送接口,可以發送未壓縮的音頻及視頻信號。隨著技術的不斷提升,HDMI的傳輸速率也不斷的提升&#…

使用GEWE框架進行微信群組管理(三)

友情鏈接:GEWE框架官網 geweapi.com 點擊訪問即可。 邀請或添加聯系人進群 小提示: 不管是添加40人以內還是以上都用此接口cause填寫邀請進群的理由 請求URL: http://域名地址/api/group/invite 請求方式: POST 請求頭&…

brew+nginx配置靜態文件服務器

背景 一下子閑下來了,了解的我的人都知道我閑不下來。于是,我在思考COS之后,決定自己整一個本地的OSS,實現靜態文件的訪問。那么,首屈一指的就是我很熟的nginx。也算是個小復習吧,復習一下nginx代理靜態文…

解決生成式AI落地之困,亞馬遜云科技提供完整解決方案

生成式AI技術無疑是當前最大的時代想象力之一。 資本、創業者、普通人都在涌入生成式AI里去一探究竟:“百模大戰”連夜打響,融資規模連創新高,各種消費類產品概念不斷涌現……根據Bloomberg Intelligence 的報告,2022年生成式AI 市…

文件操作/IO

文件 文件是一種在硬盤上存儲數據的方式,操作系統幫我們把硬盤的一些細節都封裝起來了,程序員只需要了解文件相關的接口即可,相當于操作文件就是間接的操作硬盤了 硬盤用來存儲數據,和內存相比硬盤的存儲空間更大,訪問…

使用FTP文件傳輸協議的潛在風險

數據(事實,數字,價值)是當今業務運行的核心要素。但是,如果數據沒有得到有效的存儲和傳輸,它們就會成為阻礙業務發展的障礙。如果企業不能及時地把數據送到合適的地方,就會造成嚴重的經濟損失。…

【skynet】skynet 入門代碼

寫在前面 本文將從零開始,寫第一個 skynet 程序 HelloWorld 。通過 HelloWorld 可以熟悉 skynet 的運作方式,和了解其 api 。 文章目錄 寫在前面準備工作編寫代碼運行結果 準備工作 首先要有一個編譯好,而且工作正常的 skynet 。 編寫代碼…

【Linux】Shell腳本之流程控制語句 if判斷、for循環、while循環、case循環判斷 + 實戰詳解[?建議收藏!!?]

👨?🎓博主簡介 🏅云計算領域優質創作者 ??🏅華為云開發者社區專家博主 ??🏅阿里云開發者社區專家博主 💊交流社區:運維交流社區 歡迎大家的加入! 🐋 希望大家多多支…

.bit域名調研

.bit域名研究 問題: .bit域名和ENS域名的相同點?不同點?有什么關系? .bit的定義 .bit 是基于區塊鏈的,開源的,跨鏈去中心化賬戶系統.bit 提供了以 .bit 為后綴的全局唯一的命名體系,可用于加密…