我已經Dataset <Row> dataset;并且想要對其執行一些基本操作。
例如:-假設我有 3 列“Id”、“Name”、“Age”
和這些列的資料。我想根據名稱列對此資料集執行以下操作
[1] 從名稱列中洗掉空格
[2] 從名稱列中洗掉數字
[3] 從名稱列中洗掉特殊字符
我正在使用 java8、Apache-Spark 和 Apache-Spark-ml 庫
請建議最好的方法來做到這一點。
uj5u.com熱心網友回復:
用于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);
cleanName 列具有預期值:
----------------------------- --------------------
|Name |cleanedName |
----------------------------- --------------------
|validName |validName |
|name with whitespace |namewithwhitespace |
|name with numbers 1234 |namewithnumbers |
|name with special chars !@#$%|namewithspecialchars|
----------------------------- --------------------
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/472161.html
上一篇:Spark錯誤類java.util.HashMap無法轉換為類java.lang.String
下一篇:創建計算重復行的重復欄位
