如何在变量中获取数据帧值

时间:2017-09-19 13:49:20

标签: java apache-spark apache-spark-sql

我在Java中使用spark SQL创建了一个数据框。

Dataset<Row> dateDF = spark.sql("select dates from dim_date where dates between '2017-01-01' and '2017-01-04'");

当我使用show()方法时,它会返回新行中的每个日期。据我所知,它基本上只有一栏。

我希望String变量中的这些值带有单引号,如下所示:

'2017-01-01','2017-01-02','2017-01-03,'2017-01-04'

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:3)

您可以选择列,使用as映射到字符串并收集到列表中。我认为将String列表转换为单个String应该不会成为问题:

dateDF.select("dates").as(Encoders.STRING()).collectAsList() //... and so on

在Java 8上,您可以使用以下命令将值合并为一个String:

dateDF.select("dates").as(Encoders.STRING()).collectAsList().stream().collect(Collectors.joining(","));