0
私はscalaとsparkで新しく "path"フィールドを爆発させる方法を知らず、1回のパスで最大と最小の "event_dttm"フィールドを見つけました。 は、私がデータを持っている:配列[文字列]フィールドとグループデータを1回のパスで分解する方法
val weblog=sc.parallelize(Seq(
("39f0412b4c91","staticnavi.com", Seq("panel", "cm.html"), 1424954530, "SO.01"),
("39f0412b4c91","staticnavi.com", Seq("panel", "cm.html"), 1424964830, "SO.01"),
("39f0412b4c91","staticnavi.com", Seq("panel", "cm.html"), 1424978445, "SO.01"),
)).toDF("id","domain","path","event_dttm","load_src")
私は次の結果を得るために行う必要があります。
"id" | "domain" |"newPath" | "max_time" | min_time | "load_src"
39f0412b4c91|staticnavi.com| panel | 1424978445 | 1424954530 | SO.01
39f0412b4c91|staticnavi.com| cm.html | 1424978445 | 1424954530 | SO.01
を私はそれが行関数を介して可能リアライズだと思いますが、方法がわかりません。
ありがとう!正常に動作します。 explodeを使用しない別の方法はありますか? – Fred
'rdd' APIを使用していますが、それはもっと精巧で潜在的に遅くなるでしょう。 – mtoto
flatMapで解決策を見つけました:val result = weblog.flatMap { case Row(id:String、domain:String、path:String、event_dttm:Long、load_src:String、ymd:String)=> { パスです。 (x)、BigInt(event_dttm)、load_src、ymd)) }}} – Fred