2016-01-22 102 views
1

我有一些来自PySpark 1.5的代码,我不得不向后移植到Spark 1.3。我有一个元素是字母数字的列,但我只想要数字。 一种在“DF”“old_col”的元素的例子有:Spark 1.3中的Strip或Regex函数Dataframe

'125 Bytes' 

在火花1.5我能够使用

df.withColumn('new_col',F.regexp_replace('old_col','(\D+)','').cast("long")) 

然而,我似乎无法拿出一个溶液中使用像SUBSTR或RLIKE这样的老式1.3方法。原因是“字节”前面的位数会有所不同,所以我真正需要的是在Spark 1.3中找不到的“替换”或“剥离”功能。 任何建议?

回答

2

只要你使用HiveContext可以执行相应的配置单元的UDF要么selectExpr

df.selectExpr("regexp_extract(old_col,'([0-9]+)', 1)") 

或普通的SQL:

df.registerTempTable("df") 
sqlContext.sql("SELECT regexp_extract(old_col,'([0-9]+)', 1) FROM df")