pyspark 基本api使用說明(一)


1.Array Schema轉換到Sting Schema ——array_join()方法

使用案例:

原始數據如下圖所示:

df.show()

df1 = df.select(array_join(df3.user_array, ",").alias("joined"), 'umid', 'user_array')

df1.show()

 

 

 2.Sting Schema 轉換成 Array Schema

其中,主要有以下三種方式:

2.1 split()方法

2.2 Array()方法

2.3 自定義udf函數(靈活,但是效率低)

案例:

原始數據如上圖所示,

df2 = df1.withColumn('array1', array('joined')).withColumn('array2', split(col('joined'), ','))

df2.show()

 

 

 3.針對Array[Array]Schema,變換成Array[String]的方法——flatten()方法

pyspark中flatten()方法,實現的功能類似於下面的案例:

[1,3,[4,5], [7,9.9]] --->(flatten)----->[1,3,4,5,7,9,9]

4.字符串聚合操作——collect_set \ collect_list

這兩個都是針對String類型的聚合操作,類似於數值類型的sum、avg等,使用案例為

df = spark.createDataFrame([
("a", "code1", "name1"),
("a", "code1", "name1"),
("a", "code2", "name2"),
], ["id", "code", "name"])

df.groupBy('id').agg(collect_set('code').alias('collect_set_test'), collect_list('name').alias('collect_list_test')

 

 備注:

1)collect_set和collect_list的區別是:collect_set實現去重的功能。

2)針對Array Schema的DataFrame直接落地es中,需要額外注意(將在下節中,spark數據庫連接中進行特殊說明)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM