如何在 Spark 中解码 HTML 实体?

问题描述 投票:0回答:2

我正在将大量文本文件读取到 DataFrame 中。最初它只有一列,

value
。文本文件使用 HTML 编码(即,它们具有
<
而不是
<
等)。我想将它们全部解码回正常字符。

显然,我可以使用 UDF 来完成,但速度会非常慢。

我可以尝试 regexp_replace,但它会更慢,因为有超过 200 个命名实体,并且每个实体都需要自己的 regexp 函数。每个 regexp_replace 调用都需要解析整行文本,一次搜索一个特定的编码字符。

什么是好的方法?

python apache-spark pyspark apache-spark-sql
2个回答
1
投票

由于您读取纯文本输入,我将简单地跳过 UDF 部分并在初始处理后将数据传递给 JVM。使用 Python 3.4+:

import html
from pyspark.sql.types import StringType, StructField, StructType

def clean(s):
    return html.unescape(s), 

(sc.textFile("README.md")
    .map(clean)
    .toDF(StructType([StructField("value", StringType(), False)])))

0
投票

Spark 3.5.0+现在有内置函数

pyspark.sql.functions.url_decode.html

© www.soinside.com 2019 - 2024. All rights reserved.