我这样写:
df.select(col("colname")).distinct().collect.map(_.toString()).toList
结果是
List("[2019-06-24]", "[2019-06-22]", "[2019-06-23]")
我想得到的地方:
List("2019-06-24", "2019-06-22", "2019-06-23")
请如何更改此内容
答案 0 :(得分:1)
您需要将.map(_.toString())
更改为.map(_.getAs[String]("colname"))
。
通过.map(_.toString())
,您正在调用org.apache.spark.sql.Row.toString
,这就是为什么输出类似于{ {1}}。
正确的方法是:
List("[2019-06-24]", "[2019-06-22]", "[2019-06-23]")
输出将是:
val list = df.select("colname").distinct().collect().map(_.getAs[String]("colname")).toList
答案 1 :(得分:0)
样本数据:
val df=sc.parallelize(Seq(("2019-06-24"),( "2019-06-22"),("2019-06-23"))).toDF("cn")
现在选择列,然后应用 map
以获取第一个索引值,然后添加引号,然后转换为字符串。
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")
(或)
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")