【发布时间】:2018-12-18 15:55:31
【问题描述】:
所以我有一个固定宽度的文件,直到其中的某个变量检查某个变量是“01”还是“02”,我才会知道它的格式。所以我试图创造这样的东西:
myreport= spark.read.text("/mnt/path/mydata")
myreport= myreport.select(myreport.value.substr(1,3).alias('client'),
myreport.value.substr(4,2).alias('rptnum'),
if rptnum = '01', then
myreport.value.substr(6,2).cast('integer').alias('mo1'),
myreport.value.substr(8,2).cast('integer').alias('mo2'),
myreport.value.substr(12,2).cast('integer').alias('mo3'),
Else
myreport.value.substr(6,2).cast('integer').alias('mo1'),
myreport.value.substr(8,2).cast('integer').alias('mo2'),
myreport.value.substr(12,2).cast('integer').alias('mo3'),
myreport.value.substr(14,2).cast('integer').alias('mo4'),
myreport.value.substr(16,2).cast('integer').alias('mo5'),
myreport.value.substr(18,2).cast('integer').alias('mo6'),
如果 rpt 编号不是 01,基本上列数会加倍。非常不确定如何在 pyspark 中执行此操作
【问题讨论】:
标签: python apache-spark pyspark fixed-width