您好我正在使用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中的 –