PySpark 常用語句

from pyspark.sql import functions as F

from pyspark.sql.functions import lower, col # 小寫

from pyspark.sql.functions import upper, col? # 大寫

from pyspark.sql.functions import lit # 增加列

from pyspark.sql.functions import when # ifelse

from pyspark.sql.functions import split, explode, concat, concat_ws? # split(列數(shù)據(jù)的分割), explode(一行分成多行) concat,concat_ws(列數(shù)據(jù)合并)

from pyspark.sql.types import StringType # 導(dǎo)入數(shù)據(jù)類型

from pyspark.sql.functions import UserDefinedFunction # 定義函數(shù)

from pyspark.sql.functions import desc #降序排列

from pyspark.sql.functions import trim # 去空格

a.createOrReplaceTempView("a")

a = spark.sql("select * from a").cache()?# 生成pyspark的dataframe

a.show(10)?# 查看數(shù)據(jù)head

df = df.dropDuplicates()? ?/? df.select('A_field').distinct().count()??# 去重

a.count()??# 行數(shù)

a.columns?# 查看列名

a.dtypes?# 查看字段類型

a.printSchema()??# 查看數(shù)據(jù)結(jié)構(gòu)

a.withColumnRenamed("CUST_ID",'ShipToNumber').withColumnRenamed("SKU",'SKUNumber')??# 修改列名

a.select('col').describe().show()??# 選擇某列summariy

b1 = b.drop("col").show()??# 刪除某列

a.filter(a.col== 504943)??# 篩選滿足條件的行數(shù)

a.filter(col.UPDT_DT >= '2020-01-05') \

.filter(col.INSTIT_NM == 'Unknown').show()??# 多條件篩選(and 必須換行)

a1= a.filter(lower(a.current_pagename).like('products:%')?# 篩選以a開頭的記錄

方法一:# 時間戳轉(zhuǎn)換成日期格式

a= a.withColumn('UPDT_DT',F.to_date(a.UPDT_DT))

a= a.withColumn('CRT_DT',F.to_date(a.CRT_DT))

方法二:# 時間戳轉(zhuǎn)換成日期格式

a.select('UPDT_DT').withColumn("UPDT_DT_1",col("UPDT_DT").cast("date"))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??

from pyspark.sql.functions import lower, col?# 字段轉(zhuǎn)換成小寫

WEB_USER = spark.table('WEB_USER').withColumn('CONTACT_ID_1', lower(col('WEB_USER.CONTACT_ID')))??# 小寫去空格

a.withColumn("USER_NM", upper(trim(col("USER_NM")))).show()? # 操作在dataframe上??

? # 去除開頭和結(jié)尾的空格

def single_space(col):

? ? return F.trim(F.regexp_replace(col, " +", " "))

? # 去除中間的空格

def remove_all_whitespace(col):

? ? return F.regexp_replace(col, "\\s+", "")

spark.table('a').withColumn('a1', lower(remove_all_whitespace(single_space(col("USER_NM"))))).show()? # 操作Table上

from pyspark.sql.types import StringType

from pyspark.sql.functions import UserDefinedFunction

to_none = UserDefinedFunction(lambda x: None, StringType())

a1= a.withColumn('new_column', to_none(a['login'])

a.sort('CONTACT_ID_1','USER_NM_1',ascending = False).show() #降序排列? 默認(rèn)為升序 (同升同降)

a.sort(WEB_USER_3.CONTACT_ID_1.desc(),WEB_USER_3.USER_NM_1.asc()).show() # 自定義升降

a.groupBy('CONTACT_ID_1').agg(f.count('CONTACT_ID_1').alias('count')).sort(desc('count')).show()?#分組

a.groupBy("login").count().sort(desc("count")).show()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

df.groupBy('level').agg(sf.concat_ws(',', sf.collect_list(df.name))).show()

from pyspark.sql.functions import when?# ifelse

df = df.withColumn("profile", when(df.age >= 40,"Senior") .otherwise("Executive"))?# ifelse

frame3_1 = WEB_USER_3.withColumn("name_length", f.length(WEB_USER_3.USER_NM_1))?# 新生成一列 (查看每個字段的字符長度)

ST_SKU_1.withColumn('Input',F.lit('Viewed')).show()? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

from pyspark.sql.functions import lit

new_df = df1.withColumn('newCol', lit(0)).show() # 新列為0

new_df = fy_cx_sessions_2.withColumn('new_column_1', lit(None).cast(StringType()))? #新列為NULL

df = df1.join(df2, ta.name == tb.name, how='inner'/'outer'/'left'/'right')??# 表連接

df.show()

from pyspark.sql.functions import split, explode, concat, concat_ws?# 列數(shù)據(jù)的分割

df_split = df.withColumn("s", split(df['score'], " ")) #切分字段score恋拍,生成為s

df_split.show()? ? ? ? ? ? ? ? ? ? ? ? ? ?

ST_SKU_2.withColumn('STSKU',concat(ST_SKU_2['ShipToNumber'],ST_SKU_2['SKUNumber'])) #列數(shù)據(jù)合并 (沒有分隔符)?

a.withColumn('STSKU',concat_ws("",a['ShipToNumber'],a['SKUNumber']))?#列數(shù)據(jù)合并 (指定分隔符)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

from pyspark.sql.functions import split, explode, concat, concat_ws?# 把數(shù)據(jù)拉豎(melt)

a1= a.withColumn("SKU", explode(split(a['prod_list'], ",")))?# 把數(shù)據(jù)拉豎(R:melt)


from pyspark.sql.functions import pandas_udf,pandasUDFType

@pandas_udf("user string,PL string,Order_Number integer",pandasUDFType.GROUPED_MAP)

def data_partiotion(df):

? V=df.select('Order_Number')

? return spark.createDataFrame()

df.withColumn("datetime", col("datetime").cast("timestamp"))

? ? .groupBy("userId", "memberId")

? ? .agg(max_("datetime"))? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

#注意事項(xiàng)

1 filter (命名)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

test = a.groupBy('USER_NM').agg(F.count('USER_NM').alias('count')).sort(desc('count'))

test.filter(test.count > 1).show()? 會報(bào)錯:'>' not supported between instances of 'method' and 'int'

修改成:test.filter(test['count'] > 1).show()

報(bào)錯原因:'count'為默認(rèn)方法再菊,名字沖突? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末歌径,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,682評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件弯蚜,死亡現(xiàn)場離奇詭異,居然都是意外死亡剃法,警方通過查閱死者的電腦和手機(jī)碎捺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玄窝,“玉大人牵寺,你說我怎么就攤上這事悍引《髦” “怎么了?”我有些...
    開封第一講書人閱讀 165,083評論 0 355
  • 文/不壞的土叔 我叫張陵趣斤,是天一觀的道長俩块。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么玉凯? 我笑而不...
    開封第一講書人閱讀 58,763評論 1 295
  • 正文 為了忘掉前任势腮,我火速辦了婚禮,結(jié)果婚禮上漫仆,老公的妹妹穿的比我還像新娘捎拯。我一直安慰自己,他們只是感情好盲厌,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評論 6 392
  • 文/花漫 我一把揭開白布署照。 她就那樣靜靜地躺著,像睡著了一般吗浩。 火紅的嫁衣襯著肌膚如雪建芙。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,624評論 1 305
  • 那天懂扼,我揣著相機(jī)與錄音禁荸,去河邊找鬼。 笑死阀湿,一個胖子當(dāng)著我的面吹牛赶熟,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播陷嘴,決...
    沈念sama閱讀 40,358評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼钧大,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了罩旋?” 一聲冷哼從身側(cè)響起啊央,我...
    開封第一講書人閱讀 39,261評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎涨醋,沒想到半個月后瓜饥,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡浴骂,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年乓土,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片溯警。...
    茶點(diǎn)故事閱讀 40,030評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡趣苏,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出梯轻,到底是詐尸還是另有隱情食磕,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評論 5 346
  • 正文 年R本政府宣布喳挑,位于F島的核電站彬伦,受9級特大地震影響滔悉,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜单绑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評論 3 330
  • 文/蒙蒙 一回官、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搂橙,春花似錦歉提、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜗帜,卻和暖如春恋拷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背厅缺。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評論 1 270
  • 我被黑心中介騙來泰國打工蔬顾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人湘捎。 一個月前我還...
    沈念sama閱讀 48,237評論 3 371
  • 正文 我出身青樓诀豁,卻偏偏與公主長得像,于是被迫代替她去往敵國和親窥妇。 傳聞我的和親對象是個殘疾皇子舷胜,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評論 2 355

推薦閱讀更多精彩內(nèi)容