Pyspark獲取并處理RDD數(shù)據(jù)代碼實例
彈性分布式數(shù)據(jù)集(RDD)是一組不可變的JVM對象的分布集,可以用于執(zhí)行高速運算,它是Apache Spark的核心。
在pyspark中獲取和處理RDD數(shù)據(jù)集的方法如下:
1. 首先是導(dǎo)入庫和環(huán)境配置(本測試在linux的pycharm上完成)
import os
from pyspark import SparkContext, SparkConf
from pyspark.sql.session import SparkSession
os.environ["PYSPARK_PYTHON"]="/usr/bin/python3"
conf = SparkConf().setAppName('test_rdd')
sc = SparkContext('local', 'test', conf=conf)
spark = SparkSession(sc)
2. 然后,提供hdfs分區(qū)數(shù)據(jù)的路徑或者分區(qū)表名
txt_File = r"hdfs://host:port/apps/hive/warehouse/數(shù)據(jù)庫名.db/表名/分區(qū)名/part-m-00029.deflate" # part-m-00029.deflate
# txt_File = r"hdfs://host:port/apps/hive/warehouse/數(shù)據(jù)庫名.db/表名" # hive table
3. sc.textFile進(jìn)行讀取,得到RDD格式數(shù)據(jù)<還可以用 spark.sparkContext.parallelize(data) 來獲取RDD數(shù)據(jù)>,參數(shù)中還可設(shè)置數(shù)據(jù)被劃分的分區(qū)數(shù)
txt_ = sc.textFile(txt_File)
4. 基本操作:
- type(txt_):顯示數(shù)據(jù)類型,這時屬于 'pyspark.rdd.RDD'
- txt_.first():獲取第一條數(shù)據(jù)
- txt_.take(2):獲取前2條數(shù)據(jù),形成長度為2的list
- txt_.take(2)[1].split('\1')[1]:表示獲取前兩條中的第[1]條數(shù)據(jù)(也就是第2條,因為python的索引是從0開始的),并以 '\1'字符分隔開(這要看你的表用什么作為分隔符的),形成list,再獲取該list的第2條數(shù)據(jù)
- txt_.map(lambda x:x.split('\1')):使用lambda函數(shù)和map函數(shù)快速處理每一行數(shù)據(jù),這里表示將每一行以 '\1'字符分隔開,每一行返回一個list;此時數(shù)據(jù)結(jié)構(gòu)是:'pyspark.rdd.PipelinedRDD'
- txt_.map(lambda x:(x, x.split('\1'))).filter(lambda y:y[0].startswith('北京')):表示在返回 (x, x.split('\1')) 后,進(jìn)行篩選filter,獲取其中以 '北京' 開頭的行,并按照相同格式 (例如,這里是(x, x.split('\1'))格式,即原數(shù)據(jù)+分割后的列表數(shù)據(jù)) 返回數(shù)據(jù)
- txt_.collect():返回所有RDD數(shù)據(jù)元素,當(dāng)數(shù)據(jù)量很大時謹(jǐn)慎操作
- txt_.toDF():不能直接轉(zhuǎn)成DataFrame格式,需要設(shè)置Schema
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
python批量獲取html內(nèi)body內(nèi)容的實例
今天小編就為大家分享一篇python批量獲取html內(nèi)body內(nèi)容的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
python處理multipart/form-data的請求方法
今天小編就為大家分享一篇python處理multipart/form-data的請求方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
Python捕獲全局的KeyboardInterrupt異常的方法實現(xiàn)
KeyboardInterrupt異常是Python中的一個標(biāo)準(zhǔn)異常,它通常發(fā)生在用戶通過鍵盤中斷了一個正在運行的程序,本文主要介紹了Python捕獲全局的KeyboardInterrupt異常的方法實現(xiàn),感興趣的可以了解一下2024-08-08
Python3的urllib.parse常用函數(shù)小結(jié)(urlencode,quote,quote_plus,unquot
這篇文章主要介紹了Python3的urllib.parse常用函數(shù),結(jié)合實例形式分析了urlencode,quote,quote_plus,unquote,unquote_plus等函數(shù)的相關(guān)使用技巧,需要的朋友可以參考下2016-09-09
Python使用grequests并發(fā)發(fā)送請求的示例
這篇文章主要介紹了Python使用grequests并發(fā)送請求的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下2020-11-11
python學(xué)習(xí)--使用QQ郵箱發(fā)送郵件代碼實例
這篇文章主要介紹了python使用QQ郵箱發(fā)送郵件,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04
python實現(xiàn)可以斷點續(xù)傳和并發(fā)的ftp程序
斷點續(xù)傳和并發(fā)是現(xiàn)在很多ftp程序都支持的功能,如果我們用python如何來做斷點續(xù)傳和并發(fā)了,今天來看一篇python實現(xiàn)斷點續(xù)傳和并發(fā)的ftp程序例子吧,具體如下。2016-09-09

