Spark 1.3 数据帧中的条带或正则表达式函数



我有一些来自PySpark 1.5的代码,不幸的是,我不得不向后移植到Spark 1.3。我有一列包含字母数字元素,但我只想要数字。"df"的"old_col"中的元素示例如下:

 '125 Bytes'

在Spark 1.5中,我能够使用

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

但是,我似乎无法使用旧的 1.3 方法(如 SUBSTR 或 RLIKE)提出解决方案。原因是"字节"前面的位数在长度上会有所不同,所以我真正需要的是我在 Spark 1.3 中找不到的"替换"或"剥离"功能有什么建议吗?

只要你使用HiveContext就可以执行相应的Hive 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")

相关内容

  • 没有找到相关文章

最新更新