使用 spark 从 csv 文件中删除所有特殊字符

Posted

技术标签:

【中文标题】使用 spark 从 csv 文件中删除所有特殊字符【英文标题】:remove all the special characters from a csv file using spark 【发布时间】:2019-01-07 08:44:26 【问题描述】:

如何使用 java spark 从 spark 数据帧中删除 csv 文件中的所有特殊字符 例如:下面是带有空格和特殊字符的csv文件内容

"UNITED STATES CELLULAR CORP. - OKLAHOMA",WIRELESS,"US Cellular"

o/p 我需要

UNITEDSTATESCELLULARCORPOKLAHOMA|WIRELESS|US Cellular( in lower case)

提前致谢

【问题讨论】:

代码改进 【参考方案1】:

您应该使用String.replaceAll 方法(和正则表达式)将每个不是字母数字的字符替换为空字符串。 将此用作 udf 并应用于数据框中的所有列。

java代码应该是这样的

import org.apache.spark.sql.Column;
import static org.apache.spark.sql.functions.udf;
import org.apache.spark.sql.expressions.UserDefinedFunction;
import org.apache.spark.sql.types.DataTypes;

import java.util.Arrays;

UserDefinedFunction cleanUDF = udf(
  (String strVal) -> strVal.replaceAll("[^a-zA-Z0-9]", ""), DataTypes.StringType
);

Column newColsLst[] = Arrays.stream(df.columns())
    .map(c -> cleanUDF.apply(new Column(c)).alias(c) )
    .toArray(Column[]::new);

Dataset<Row> new_df = df.select(newColsLst);

参考:How do I call a UDF on a Spark DataFrame using JAVA?

【讨论】:

@pragadeeshwaranvenkatachalam 我添加了一个 java 代码。抱歉,我无法测试它,它可能无法正常工作

以上是关于使用 spark 从 csv 文件中删除所有特殊字符的主要内容,如果未能解决你的问题,请参考以下文章

Spark读取一个文件夹中的所有csv文件

读入火花数据框时如何从csv文件中删除列

在 read.csv 期间使用限制的 Spark 推断架构

从 spark RDD 中删除空字符串

从 S3 存储桶中读取大量 CSV 文件

如何从 Spark 正确读取 S3 中的 .csv 文件? - 无法读取文件的页脚