【问题标题】:How to apply predefined regex pattern in spark dataframe? [closed]如何在火花数据框中应用预定义的正则表达式模式? [关闭]
【发布时间】:2019-09-02 19:35:44
【问题描述】:

我已经定义了一个正则表达式来从一个日志文件中提取主机名:

val host = "[a-zA-Z0-9]+\.[a-zA-Z]+\.[a-zA-Z]+".r

但是当我尝试在 spark 数据帧中应用此模式时,它会引发错误:

df.withColumn(col("hostname"),regexp_extract("value",host,1)).show(5) 

错误:

:28: 错误:类型不匹配;找到:scala.util.matching.Regex 需要:String df.withColumn(col("hostname"),regexp_extract("value",host,1)).show(5)

如何将预定义的正则表达式模式应用于列?

【问题讨论】:

    标签: regex scala apache-spark dataframe apache-spark-sql


    【解决方案1】:

    在错误中,您有:

    类型不匹配;找到:scala.util.matching.Regex 需要:字符串

    host 变量是 Regex 类型,而 Spark 函数 regexp_extract 需要一个字符串。

    要解决这个问题,只需在创建host 时删除.r 以将变量保留为字符串:

    val host = "[a-zA-Z0-9]+\.[a-zA-Z]+\.[a-zA-Z]+"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-28
      • 2013-03-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-27
      相关资源
      最近更新 更多