如何使用Java Spark从Spark数据帧中的CSV文件中删除所有特殊字符 例如:以下是带有空格和特殊字符
的csv文件内容"UNITED STATES CELLULAR CORP. - OKLAHOMA",WIRELESS,"US Cellular"
我需要的
UNITEDSTATESCELLULARCORPOKLAHOMA|WIRELESS|US Cellular( in lower case)
预先感谢
答案 0 :(得分:0)
您应该使用String.replaceAll方法(和正则表达式)将每个不是alapha数字的字符替换为空字符串。 将此作为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);