Python pyspark中的列值处理
我有一个管道,如下所示。每行中有超过4k的列,但我只显示了很少的列Python pyspark中的列值处理,python,regex,pyspark,Python,Regex,Pyspark,我有一个管道,如下所示。每行中有超过4k的列,但我只显示了很少的列 raw_rdd ['2016-09-21T00:00:00-05:00 Chicago,"","",150.39999389648438cfm,false,false,0.30000001192092896inHO,68F,70.69999694824219F,.....'] 在这里,我尝试应用某些转换,例如如果字段值与regex“\d{4}[-]\d{2}[-]\d{2}”匹配日期值2016-09-21T00:00-05
raw_rdd
['2016-09-21T00:00:00-05:00 Chicago,"","",150.39999389648438cfm,false,false,0.30000001192092896inHO,68F,70.69999694824219F,.....']
在这里,我尝试应用某些转换,例如如果字段值与regex“\d{4}[-]\d{2}[-]\d{2}”
匹配日期值2016-09-21T00:00-05:00 Chicago
,那么它应该只返回2016-09-21T00:00-05:00
。但它正在返回原始值
代码
谁能帮我找出问题所在。问题是我将整行视为列值。在我进行分割(,)之后,我得到了正确的o/p您没有返回匹配项,只有在存在匹配项时才返回True,并打印整行
。返回组(0)
并打印它。
def is_date(inst):
if re.search("\d{4}[-]\d{2}[-]\d{2}", inst):
return True
def transform(line):
for i in range(len(line)):
if is_date(str(line[i])):
if str(line[i]) != "":
line[i] = line[i].split( )[0]
return line
transformed_rdd = raw_rdd.map(transform)