使用 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 文件中删除所有特殊字符的主要内容,如果未能解决你的问题,请参考以下文章