错误重载方法值 regexp_replace 与备选方案
error overloaded method value regexp_replace with alternatives
我正在尝试用数据框 df_test
中名为 UserAgent 的列中的数据将“/”字符替换为 space(" ")
列中的数据如下所示:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) 像 Gecko
我试过使用
val df_test =spark.sql(s"select UserAgent from df_header_pivot")
df_test.withColumn("UserAgent", regexp_replace("UserAgent", "[/]", ""))
但我收到错误消息:
notebook:4: error: overloaded method value regexp_replace with alternatives:
(e: org.apache.spark.sql.Column,pattern: org.apache.spark.sql.Column,replacement: org.apache.spark.sql.Column)org.apache.spark.sql.Column
(e: org.apache.spark.sql.Column,pattern: String,replacement: String)org.apache.spark.sql.Column
cannot be applied to (org.apache.spark.sql.ColumnName, org.apache.spark.sql.Column)
df_test.withColumn("UserAgent", regexp_replace($"UserAgent" , lit("/")))
您需要在 regexp_replace
函数中的列名前使用 $
符号。
import org.apache.spark.sql.functions._
val df_test =spark.sql(s"select UserAgent from df_header_pivot")
df_test.withColumn("UserAgent", regexp_replace($"UserAgent", "[/]", " "))
当您使用 SparkSQL 时,您可以简单地调用 SQL 本身的 replace
函数,例如:
val df_test =spark.sql(s"select replace(UserAgent, '/', '') AS UserAgent from tmp")
df_test.show
交替使用translate
函数替换不需要正则表达式的字符,例如
df_test
.withColumn("UserAgent", translate($"UserAgent", "/", ""))
.show
不需要正则表达式。
我正在尝试用数据框 df_test
中名为 UserAgent 的列中的数据将“/”字符替换为 space(" ")列中的数据如下所示:
Mozilla/5.0 (Windows NT 6.1; WOW64; Trident/7.0; rv:11.0) 像 Gecko
我试过使用
val df_test =spark.sql(s"select UserAgent from df_header_pivot")
df_test.withColumn("UserAgent", regexp_replace("UserAgent", "[/]", ""))
但我收到错误消息:
notebook:4: error: overloaded method value regexp_replace with alternatives: (e: org.apache.spark.sql.Column,pattern: org.apache.spark.sql.Column,replacement: org.apache.spark.sql.Column)org.apache.spark.sql.Column (e: org.apache.spark.sql.Column,pattern: String,replacement: String)org.apache.spark.sql.Column cannot be applied to (org.apache.spark.sql.ColumnName, org.apache.spark.sql.Column) df_test.withColumn("UserAgent", regexp_replace($"UserAgent" , lit("/")))
您需要在 regexp_replace
函数中的列名前使用 $
符号。
import org.apache.spark.sql.functions._
val df_test =spark.sql(s"select UserAgent from df_header_pivot")
df_test.withColumn("UserAgent", regexp_replace($"UserAgent", "[/]", " "))
当您使用 SparkSQL 时,您可以简单地调用 SQL 本身的 replace
函数,例如:
val df_test =spark.sql(s"select replace(UserAgent, '/', '') AS UserAgent from tmp")
df_test.show
交替使用translate
函数替换不需要正则表达式的字符,例如
df_test
.withColumn("UserAgent", translate($"UserAgent", "/", ""))
.show
不需要正则表达式。