我在pyspark中将数组拆分为单独的列时遇到了一个问题。数组长度是可变的(范围为0-2064)。我试着重用我发现的一段代码,但由于数据量巨大,它无法工作。这是我在将数组转换成字符串(dec\u spec\u str)后尝试的片段。这需要永远。感谢您的帮助。提前谢谢
df2 =df2.select(
"hashval",
f.split("dec_spec_str", ",").alias("dec_spec_str"),
f.posexplode(f.split("dec_spec_str", ",")).alias("pos", "val")
)\
.drop("val")\
.select(
"hashval",
f.concat(f.lit("decoded_spec_"),f.col("pos").cast("string")).alias("name"),
f.expr("dec_spec_str[pos]").alias("val")
)\
.groupBy("hashval").pivot("name").agg(f.first("val"))
我还想到了一个想法,创建4000个左右字段的Dataframe,然后解析并写入该字段或其副本。如果这样更好,请告诉我怎么做。我还在和皮斯帕克相处
像这样输入decode\u spec\u str=[1.203.3.455,2.334,1.203,0.345]像这样输出
1条答案
按热度按时间k0pti3hp1#
iiuc,这对你来说是个可行的解决方案-
在这里创建df
输入和处理输出
现在,您将观察到列名是一些意想不到的东西,#这里有一个小技巧来重新排序列名
最终输出