【发布时间】:2020-05-26 14:32:49
【问题描述】:
我有一个 pyspark 数据框列,其中包含如下数据。
event_list
PL:1547497782:1547497782~ST:1548593509:1547497782
PU:1547497782:1547497782~MU:1548611698:1547497782:1~MU:1548612195:1547497782:0~ST:1548627786:1547497782
PU:1547497782:1547497782~PU:1547497782:1547497782~ST:1548637508:1547497782
PL:1548631949:0
PL:1548619200:0~PU:1548623089:1548619435~PU:1548629541:1548625887~RE:1548629542:1548625887~PU:1548632702:1548629048~ST:1548635966:1548629048
PL:1548619583:1548619584~ST:1548619610:1548619609
PL:1548619850:0~ST:1548619850:0~PL:1548619850:0~ST:1548619850:0~PL:1548619850:1548619851~ST:1548619856:1548619855
我只对PL: 之后的前 10 位数字和ST: 之后的前 10 位数字感兴趣(如果存在)。对于 PL 拆分,我使用了
df.withColumn('PL', split(df['event_list'], '\:')[1])
对于 ST:由于记录的长度不同,逻辑不起作用,我可以使用它
df.withColumn('ST', split(df['event_list'], '\ST:')[1])
它返回ST:1548619856:1548619855 并再次拆分第一部分。我有 150 万条记录,所以我想知道是否有更好的方法。
这是预期的输出
PL ST
154749778 1548593509
null 1548627786
null 1548637508
154863194 null
154861920 1548635966
154861958 1548619610
154861985 1548619856
【问题讨论】:
标签: apache-spark pyspark apache-spark-sql databricks