Kiw*_*iwy 3 java scala apache-spark
我有一个包含 url 编码字符串的数据框列,例如:
我想做这样的事情:
someDF.withColumn('newcol', URLDecoder.decode( col("mystring"), "utf-8" ))
someDF.show()
| mystring | newcol |
--------------------------------------------------
| ThisIs%201rstString | ThisIs 1rstString |
| This%20is%3Ethisone | This is>thisone |
| and%20so%20one | and so one |
Run Code Online (Sandbox Code Playgroud)
我应该怎么做这样的事情,我猜地图功能即将到来,但无法弄清楚如何使用它。
注意:这是一个示例,它不是创建多个替换语句的选项,因为还有许多其他编码字符和列表可能会有所不同,我想使用一种简单可靠的方法来做到这一点。
您可以尝试 SparkSQL 内置函数reflect:
reflect(class, method[, arg1[, arg2 ..]]) - 使用反射调用方法。
df = spark.createDataFrame([(e,) for e in ["ThisIs%201rstString", "This%20is%3Ethisone", "and%20so%20one"]], ["mystring"])
df.selectExpr("*", "reflect('java.net.URLDecoder','decode', mystring, 'utf-8') as newcol").show()
+-------------------+-----------------+
| mystring| newcol|
+-------------------+-----------------+
|ThisIs%201rstString|ThisIs 1rstString|
|This%20is%3Ethisone| This is>thisone|
| and%20so%20one| and so one|
+-------------------+-----------------+
Run Code Online (Sandbox Code Playgroud)
注意:以上是 Python 代码,你应该可以用 Scala 做同样的事情。
| 归档时间: |
|
| 查看次数: |
411 次 |
| 最近记录: |