私は7つの文字列要素を持つRDDを持っています linesData:org.apache.spark.rdd.RDD [(String、String、String、String、String、String、String、String)] 各レコードのステータスとCSrangeの2つの項目を把握する必要があります。マップ内の複数のネストされたケースステートメントをマップします
ロジックのようなものである。この時点で
case when a(6)=0
if Date(a(5)) > Date(a(4)) then
if Date(a(5)) - Date(a(4)) > 60 days then
staus = '60+'
else
status = 'Curr'
endif
else
status = 'Curr'
end
when (a(6) >=1 and a(6) <=3) then
Status = 'In-Forcl'
when (a(6) >=4 and a(6) <=8)
Status = 'Forclosed'
else
Status = 'Unknown'
end case
case when (a(1) <640 and a(1) >0) then CSrange = '<640'
when (a(1) <650 and a(1)> 579 then CSrange = '640-649'
when (a(1) <660 and a(1)> 619 then CSrange = '650-659'
when (a(1) <680 and a(1)> 639 then CSrange = '640-649'
when (a(1) >789 then CSrange = '680+'
else
CSRange ='Unknown'
end case
、私は(後で私が速度を計算行う必要があります7のinsteatdおそらく9要素と、ディスクへのデータの書き込みしたいと思います上記の各ステータスのさまざまな要素による)。
私の最初の問題は次のとおりです。 1.日付の算定方法? RDDレベル(データフレームなし)にとどまる必要があるためです。 2. SCALAでCASE文を実行する方法がわかりません。
サンプルデータ:
(2017_7_0555,794,Scott,CORNERSTONE,8/1/2017,8/1/2017,0)
(2017_7_0557,682,Hennepin,LAKE AREA MT,9/1/2017,8/1/2017,0)
(2017_7_0565,754,Ramsey,GUARANTEED R,6/1/2017,8/1/2017,0)
(2017_7_0570,645,Hennepin,FAIRWAY INDE,2/1/2015,8/1/2017,5)
(2017_7_0574,732,Wright,GUARANTEED R,7/1/2017,8/1/2017,0)
(2017_7_0575,789,Hennepin,GUARANTEED R,8/1/2017,8/1/2017,0)
(2017_7_0577,662,Hennepin,MIDCOUNTRY,8/1/2017,8/1/2017,0)
(2017_7_4550,642,Mower,WELLS FARGO,5/1/2017,8/1/2017,0)
(2017_7_4574,689,Hennepin,RIVER CITY,8/1/2017,8/1/2017,0)
(2017_7_4584,662,Hennepin,WELLS FARGO,8/1/2017,8/1/2017,0)
(2017_7_4600,719,Ramsey,PHH HOME LOA,5/1/2017,8/1/2017,0)
学校のプロジェクトのためのものもあります。 – Rachel
はデリミタされたデータラインですか?入力データを正しくフォーマットできますか? –
はい。入力がきれいです。 – Rachel