【发布时间】:2019-08-23 20:29:24
【问题描述】:
我有一个正在运行的 Spark 应用程序执行配置单元查询。
有了新的要求,我需要删除所选键中的所有空格。
根据Apache documentationregexp_replace适合我的情况:
regexp_replace(string INITIAL_STRING, string PATTERN, string REPLACEMENT)返回将 INITIAL_STRING 中与 PATTERN 中定义的 java 正则表达式语法匹配的所有子字符串替换为 REPLACEMENT 实例的字符串。 > 例如,regexp_replace("foobar", "oo|ar", "")返回'fb.'请注意,在使用预定义字符类时需要注意:使用'\s'作为第二个参数将匹配字母 s;'\\s'是匹配空格等所必需的。
运行这个:
public class SparkSql {
private SparkSession session = SparkSession.builder()
.appName("hive-sql")
.config("spark.config.option", "configuration")
.enableHiveSupport()
.getOrCreate();
// Omitted code here ...
public void execute() {
Dataset<Row> dataset = session.sql("select regexp_replace(master_key, '\\s+', ''") as key from master_table);
JavaRDD<Row> rdd = context.parallelize(dataset.collectAsList(), factor);
for (Row row : rdd.collect())
System.out.println(row.getString(row.fieldIndex("key")));
}
}
输出:
ABCD 100000
预期:
ABCD100000
由于某种原因,regexp_replace 未被应用。
这可能是什么原因?
【问题讨论】:
标签: java apache-spark hive