Env:Spark 1.6、Scala
私のデータフレームは次のようなものです
DF =
DT col1 col2
---------- | --- | ----
2017011011 | AA | BB
2017011011 | CC | DD
2017011015 | PP | BB
2017011015 | QQ | DD
2017011016 | AA | BB
2017011016 | CC | DD
2017011017 | PP | BB
2017011017 | QQ | DD
SQLのような結果を得るためにフィルタリングするにはどうすればよいですか? select * from DF where dt> (select distinct dt from DF order by dt desc limit 3)
出力には最後の3つの日付があります
2017011015 | PP | BB
2017011015 | QQ | DD
2017011016 | AA | BB
2017011016 | CC | DD
2017011017 | PP | BB
2017011017 | QQ | DD
ありがとう
ホセイン
Spark1.6.1でテスト済み
import sqlContext.implicit._
val df = sqlContext.createDataFrame(Seq(
(2017011011, "AA", "BB"),
(2017011011, "CC", "DD"),
(2017011015, "PP", "BB"),
(2017011015, "QQ", "DD"),
(2017011016, "AA", "BB"),
(2017011016, "CC", "DD"),
(2017011017, "PP", "BB"),
(2017011017, "QQ", "DD")
)).select(
$"_1".as("DT"),
$"_2".as("col1"),
$"_3".as("col2")
)
val dates = df.select($"DT")
.distinct()
.orderBy(-$"DT")
.map(_.getInt(0))
.take(3)
val result = df.filter(dates.map($"DT" === _).reduce(_ || _))
result.show()
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加