あなたはこのようになります簡単なデータフレームがある場合:シンプルなロールダウンスパークデータフレーム付き(スカラ)
val n = sc.parallelize(List[String](
"Alice", null, null,
"Bob", null, null,
"Chuck"
)).toDF("name")
を次のようになります。
//+-----+
//| name|
//+-----+
//|Alice|
//| null|
//| null|
//| Bob|
//| null|
//| null|
//|Chuck|
//+-----+
がどのようにデータフレームを使用することができますROLL-ダウン機能を得るために:
//+-----+
//| name|
//+-----+
//|Alice|
//|Alice|
//|Alice|
//| Bob|
//| Bob|
//| Bob|
//|Chuck|
//+-----+
注:すべての必要な輸入を明記してください、私はこれらの疑いが含まれます:
import org.apache.spark.sql.functions._
import org.apache.spark.sql.expressions.{WindowSpec, Window}
注:私は模倣しようとしたいくつかのサイトは以下のとおりです。
http://xinhstechblog.blogspot.com/2016/04/spark-window-functions-for-dataframes.html
と
https://databricks.com/blog/2015/07/15/introducing-window-functions-in-spark-sql.html
私が気付いて、私は過去にこのようなものに遭遇しましたSparkのバージョンは異なるでしょう。私はクラスタで1.5.2を使用しています(このソリューションがより便利です)。ローカルエミュレーションでは2.0です。私は1.5.2互換のソリューションを好む。
また、私は離れて直接SQLを書いてから取得したいのですが - あなたは値のグループ化を可能にする別の列を持っている場合は、ここで提案ですsqlContext.sql(...)
ヌル値の配置を許可する列がありますか?あなたが指定した例では、DataFramesが配布されているため、順序が決定的になることはありません。したがって、コードを実行するたびにnull値が別の場所に表示されます。いくつかの順序付け(またはグループ化)を定義できる別の列がある場合は、解決策がそれほど難しくありません。 –