java Spark转化

vsaztqbk  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(71)

我有这样一个数据表,记录数超过百万行,唯一字段attr_id、attr_name不超过20个
| 对象标识|属性标识|属性名称|价值|
| - ------|- ------|- ------|- ------|
| 7315dcbf-6178-4aa7-97ba-8875e2542471|f5af0127-fd4c-409b-afda-b896a80f7fe1|姓名|奥列格|
| 7315dcbf-6178-4aa7-97ba-8875e2542471|ebdd03e5-a380-46bd-b505-f1f166be6409|年龄|二十二|
| 7315dcbf-6178-4aa7-97ba-8875e2542471|735fab29-cde8-4b34-979f-864b375f820f|数|小行星2222|
| 50b9d918-b0ab-41d4-957c-24f506ceb737|f5af0127-fd4c-409b-afda-b896a80f7fe1|姓名|马克斯|
| 50b9d918-b0ab-41d4-957c-24f506ceb737|ebdd03e5-a380-46bd-b505-f1f166be6409|年龄||
| 50b9d918-b0ab-41d4-957c-24f506ceb737|735fab29-cde8-4b34-979f-864b375f820f|数|三二二二|
我想把它转换成这种格式
| 对象标识|姓名|年龄|数|
| - ------|- ------|- ------|- ------|
| 7315dcbf-6178-4aa7-97ba-8875e2542471|奥列格|二十二|小行星2222|
| 50b9d918-b0ab-41d4-957c-24f506ceb737|马克斯||三二二二|
有没有可能使用spark来做到这一点,如果有,如何做到,或者阅读什么材料?

ql3eal8s

ql3eal8s1#

您可以简单地按如下方式透视数据框:

from pyspark.sql import functions as F
dataframe.groupBy("object_id")\
         .pivot("attr_name")\
         .agg(F.first(F.col("value")))\
         .show(truncate=False)
+------------------------------------+----+----+------+
|object_id                           |age |name|number|
+------------------------------------+----+----+------+
|50b9d918-b0ab-41d4-957c-24f506ceb737|null|Max |32222 |
|7315dcbf-6178-4aa7-97ba-8875e2542471|22  |Oleg|22222 |
+------------------------------------+----+----+------+

相关问题