首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >收集数据火花

问收集数据火花
EN

Stack Overflow用户
提问于 2019-08-01 17:10:12
回答 2查看 580关注 0票数 0

我写了这个:

代码语言:javascript
复制
df.select(col("colname")).distinct().collect.map(_.toString()).toList

结果是

代码语言:javascript
复制
List("[2019-06-24]", "[2019-06-22]", "[2019-06-23]")

而我想要:

代码语言:javascript
复制
List("2019-06-24", "2019-06-22", "2019-06-23")

请给我换一下。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-08-01 18:05:06

您需要将.map(_.toString())更改为.map(_.getAs[String]("colname"))。

使用.map(_.toString()),您将调用org.apache.spark.sql.Row.toString,这就是输出类似于List("[2019-06-24]", "[2019-06-22]", "[2019-06-23]")的原因。

正确的方法是:

val list = df.select("colname").distinct().collect().map(_.getAs[String]("colname")).toList

产出将是:

代码语言:javascript
复制
List("2019-06-24", "2019-06-22", "2019-06-23")
票数 1
EN

Stack Overflow用户

发布于 2019-08-01 18:05:48

样本数据:

代码语言:javascript
复制
val df=sc.parallelize(Seq(("2019-06-24"),( "2019-06-22"),("2019-06-23"))).toDF("cn")

现在,选择列map,然后应用获取,首先是索引值,然后是,添加引号,,然后转换为string。

代码语言:javascript
复制
df.select("cn").collect().map(x => x(0)).map(x => s""""$x"""".toString)
//res36: Array[String] = Array("2019-06-24", "2019-06-22", "2019-06-23")

(或)

代码语言:javascript
复制
df.select("cn").collect().map(x => x(0)).map(x => s""""$x"""".toString).toList
//res37: List[String] = List("2019-06-24", "2019-06-22", "2019-06-23")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57313929

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档