您好,登錄后才能下訂單哦!
本篇文章為大家展示了Pyspark處理數(shù)據(jù)中帶有列分隔符的數(shù)據(jù)集,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
下面主要內(nèi)容是處理在數(shù)據(jù)集中存在列分隔符或分隔符的特殊場景。對于Pyspark開發(fā)人員來說,處理這種類型的數(shù)據(jù)集有時是一件令人頭疼的事情,但無論如何都必須處理它。
數(shù)據(jù)集基本上如下所示:
#first line is the headerNAME|AGE|DEP
Vivek|Chaudhary|32|BSC
John|Morgan|30|BE
Ashwin|Rao|30|BE
數(shù)據(jù)集包含三個列" Name ", " AGE ", " DEP ",用分隔符" | "分隔。如果我們關(guān)注數(shù)據(jù)集,它也包含' | '列名。
讓我們看看如何進行下一步:
步驟1。使用spark的Read .csv()方法讀取數(shù)據(jù)集:
#create spark session
import pyspark
from pyspark.sql import SparkSession
spark=SparkSession.builder.appName(‘delimit’).getOrCreate()
上面的命令幫助我們連接到spark環(huán)境,并讓我們使用spark.read.csv()讀取數(shù)據(jù)集
#create
df=spark.read.option(‘delimiter’,’|’).csv(r’<path>/delimit_data.txt’,inferSchema=True,header=True)
df.show()
從文件中讀取數(shù)據(jù)并將數(shù)據(jù)放入內(nèi)存后我們發(fā)現(xiàn),最后一列數(shù)據(jù)在哪里,列年齡必須有一個整數(shù)數(shù)據(jù)類型,但是我們看到了一些其他的東西。這不是我們所期望的。一團糟,完全不匹配,不是嗎?答案是肯定的,確實一團糟。
現(xiàn)在,讓我們來學(xué)習(xí)如何解決這個問題。
步驟2。再次讀取數(shù)據(jù),但這次使用Read .text()方法:
df=spark.read.text(r’/Python_Pyspark_Corp_Training/delimit_data.txt’)
df.show(truncate=0)
#extract first row as this is our header
head=df.first()[0]
schema=[‘fname’,’lname’,’age’,’dep’]
print(schema)
Output: ['fname', 'lname', 'age', 'dep']
下一步是根據(jù)列分隔符對數(shù)據(jù)集進行分割:
#filter the header, separate the columns and apply the schema
df_new=df.filter(df[‘value’]!=head).rdd.map(lambda x:x[0].split(‘|’)).toDF(schema)
df_new.show()
現(xiàn)在,我們已經(jīng)成功分離出列。
我們已經(jīng)成功地將“|”分隔的列(“name”)數(shù)據(jù)分成兩列?,F(xiàn)在,數(shù)據(jù)更加干凈,可以輕松地使用。
接下來,連接列“fname”和“l(fā)name”:
from pyspark.sql.functions import concat, col, lit
df1=df_new.withColumn(‘fullname’,concat(col(‘fname’),lit(“|”),col(‘lname’)))
df1.show()
要驗證數(shù)據(jù)轉(zhuǎn)換,我們將把轉(zhuǎn)換后的數(shù)據(jù)集寫入CSV文件,然后使用read. CSV()方法讀取它。
df1.write.option(‘sep’,’|’).mode(‘overwrite’).option(‘header’,’true’).csv(r’<file_path>\cust_sep.csv’)
下一步是數(shù)據(jù)驗證:
df=spark.read.option(‘delimiter’,’|’).csv(r<filepath>,inferSchema=True,header=True)
df.show()
現(xiàn)在的數(shù)據(jù)看起來像我們想要的那樣。
上述內(nèi)容就是Pyspark處理數(shù)據(jù)中帶有列分隔符的數(shù)據(jù)集,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。