SparkSql和正则表达式

时间:2019-03-04 13:25:28

标签: java json regex apache-spark-sql

在我的情况下,我在JavaSparkSQL中使用数据集(数据框)。 该数据集来自JSON文件。 json文件是由键值组成的。当我午餐查询以查看我为示例编写的值时:

 SELECT key1.name from table

示例JSON文件

 {
     "key1":
           { "name": ".....",....}
     "key2":
           { "name":"....",....}
    }

我的问题是,当我想全部使用密钥时,我相信我应该使用REGEX之类的

select key*.name from table

但是我不知道正则表达式! 请帮助

1 个答案:

答案 0 :(得分:0)

恐怕(spark)SQL中没有这样的语法。

尽管您可能希望以编程方式构造查询。

类似:

String sql = Stream.of(ds.schema().fieldNames()).filter(name -> name.startsWith("key")).collect(Collectors.joining(", ", "select ", " from table"));
System.out.println(sql);

甚至

Dataset<Row> result = spark.table("table").select(Stream.of(ds.schema().fieldNames()).filter(name -> name.startsWith("key")).map(name -> ds.col(name))
                .toArray(Column[]::new));
result.show();

HTH!