您好我正在使用scala來識別行的第一個字並創建一個唯一值並將其附加到RDD中。但我不知道該怎麼做。我是斯卡拉新手,所以請原諒,如果這個問題聽起來跛腳。 我正在嘗試的示例如下。如何在RDD中添加唯一值火花
樣品:
OBR|1|METABOLIC PANEL
OBX|1|Glucose
OBX|2|BUN
OBX|3|CREATININE
OBR|2|RFLX TO VERIFICATION
OBX|1|EGFR
OBX|2|SODIUM
OBR|3|AMBIGUOUS DEFAULT
OBX|1|POTASSIUM
我要檢查,如果第一個字是OBR與否,如果它是OBR比我創建了一個獨特的價值,並希望將其追加在OBR和下方OBX直到我發現了一個OBR,我想這樣做。但是我怎麼能做到這一點?我正在將我的數據從HDFS。
預期結果:
OBR|1|METABOLIC PANEL|OBR_filename_1
OBX|1|Glucose|OBR_filename_1
OBX|2|BUN|OBR_filename_1
OBX|3|CREATININE|OBR_filename_1
OBR|2|RFLX TO VERIFICATION|OBR_filename_2
OBX|1|EGFR|OBR_filename_2
OBX|2|SODIUM|OBR_filename_2
OBR|3|AMBIGUOUS DEFAULT|OBR_filename_3
OBX|1|POTASSIUM|OBR_filename_3
在分佈式系統(如spark和hdfs)中,沒有像按順序讀取文件那樣的東西。如果所有的OBR都是先讀取的,然後再讀取所有的OBR,你會如何處理代碼?你想讓所有其他記錄得到最後一個文件名嗎?如果不是,如果你在單個文件上使用單個核心運行你的應用程序,那麼你可能會按照你期望的順序讀入文件,但是爲什麼使用spark呢? –
@ASpotySpot我想依次讀取它,並檢查它是否獲取** OBR **作爲第一個值創建「OBR_filename_id」,並在所有obx中放入相同的「OBR_filename_id」,直到它到達下一個** OBR ** – animal
因此,您的文件由於它在hdfs上被分成許多部分。例如,順序閱讀意味着什麼?如果它沒有被分割成許多部分,那麼不管怎麼做,它都會平行地處理文件的部分內容,除非你使用單個內核,否則讓它依次操作依然是棘手的(據我所知)。我可以把一些東西放在一起,但在這一點上,我相信它使用火花毫無意義。我的HDFS中的 –