0
我是Spark新手,使用Scala 2.10和Spark 1.6。 試圖Input_file_001.txt格式如下,使用Spark格式化文本文件
Input_file_001.txt:
Dept 0100 Batch Load Errors for 8/16/2016 4:45:56 AM
Case 1111111111
Rectype: ABCD
Key:UMUM_REF_ID=A12345678,UMSV_SEQ_NO=1
UMSV ERROR :UNITS_ALLOW must be > or = UNITS_PAID
Case 2222222222
Rectype: ABCD
Key:UMUM_REF_ID=B87654321,UMSV_SEQ_NO=2
UMSV ERROR :UNITS_ALLOW must be > or = UNITS_PAID
NTNB ERROR :Invalid Value NTNB_MCTR_SUBJ=AMOD
Case 3333333333
Rectype: WXYZ
Key:UMUM_REF_ID=U19817250,UMSV_SEQ_NO=2
UMSV ERROR :UNITS_ALLOW must be > or = UNITS_PAID
輸出文件
Input_file_001.txt
case~Rectype~key,Error
1111111111~ABCD~UMUM_REF_ID=A12345678,UMSV_SEQ_NO=1~UMSV ERROR :UNITS_ALLOW must be > or = UNITS_PAID
2222222222~ABCD~UMUM_REF_ID=B87654321,UMSV_SEQ_NO=2~UMSV ERROR :UNITS_ALLOW must be > or = UNITS_PAID,NTNB ERROR :Invalid Value NTNB_MCTR_SUBJ=AMOD
3333333333~WXYZ~UMUM_REF_ID=U19817250,UMSV_SEQ_NO=2~UMSV ERROR :UNITS_ALLOW must be > or = UNITS_PAID
我試圖去實現它像下面,
val source = sc.textFile("Input_file_001.txt")
val fileread = source.filter(x => ! x.startsWith("Dept"))).filter(_.nonEmpty).map(z => z.trim)
上面的代碼給我陣列[字符串],不能把它轉發。 任何幫助表示讚賞。
謝謝拉梅什您的輸入。我嘗試了你的解決方案,它給了我與源文件相同的格式,但是在每一行中用〜代替。我試圖實現輸出文件格式,因爲每個字段由〜和行分隔,並以新行結束,因此我可以在其上創建外部配置單元表。也可以在輸出文件中添加源文件名作爲字段? – vin
是不是你的源文件中的問題?如果不是那麼解決方案將無法正常工作, –
哦,我明白了。我使用部分代碼在IntelliJ本地運行它。我剛剛嘗試在羣集上運行.jar。現在正在給予預期的結果。你太棒了。謝謝。 – vin