2017-01-04 6 views
0

ENV: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

感謝
ホサイン

答えて

0

は1.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() 
+0

おかげで、それは私のために働いているスパークでテスト – Jhon

関連する問題