Java中的Spark ml基本操作

Spark ml basic operation in Java

我有 Dataset <Row> dataset; 并想对其执行一些基本操作。
例如:- 假设我有 3 列 "Id","Name","Age" 和这些列的数据。我想根据 Name
对该数据集执行以下这些操作 [1] 从名称列
中删除白色 space [2] 从名称列中删除数字
[3] 从名称列中删除特殊字符

我正在使用 java8、Apache-Spark 和 Apache-Spark-ml 库

请建议最好的方法。

使用regexp_replace()替换空格、数字和特殊字符。 (基本上只保留字母)。

List<Row> rows = new ArrayList<Row>() {{
    add(RowFactory.create("validName"));
    add(RowFactory.create("name with whitespace    "));
    add(RowFactory.create("name with numbers 1234"));
    add(RowFactory.create("name with special chars !@#$%"));

}};

StructField[] structFields = new StructField[]{
        new StructField("Name", DataTypes.StringType, false, Metadata.empty()),
};

//create sample data
Dataset<Row> input = spark().createDataFrame(rows, new StructType(structFields));
input.withColumn("cleanedName", functions.regexp_replace(functions.col("Name"),"[^a-zA-Z]+", "")).show(100, false);

清理后的名称列具有预期值:

+-----------------------------+--------------------+
|Name                         |cleanedName         |
+-----------------------------+--------------------+
|validName                    |validName           |
|name with whitespace         |namewithwhitespace  |
|name with numbers 1234       |namewithnumbers     |
|name with special chars !@#$%|namewithspecialchars|
+-----------------------------+--------------------+