Scala中如何将键值对的所有键转为小写?
解决Scala MapReduce中单词键统一小写的问题
没问题呀!刚接触Scala和MapReduce的时候,这种大小写统一的细节确实容易忽略~
你只需要在生成键值对的map步骤里,调用Scala字符串的toLowerCase()方法,把每个单词转为小写作为键就可以了。修改后的完整代码如下:
val test = sc.textFile("cat.txt") val flattenMap = test.flatMap(line => line.split(" ")) val mapreduce = flattenMap.map(word => (word.toLowerCase, 1)).reduceByKey((a,b) => a + b)
改动说明:
- 核心修改是将
map(word => (word, 1))改成了map(word => (word.toLowerCase, 1)) toLowerCase()会将任意大小写的字符串统一转为小写,这样原文本里的"Cat"、"CAT"、"cat"都会被识别为同一个键,最终统计的次数会合并在一起
如果后续还需要处理文本中的标点符号(比如"Hello,"和"Hello"会被当成不同的单词),可以在split之后或者转小写之前添加标点去除的逻辑,但如果只是解决大小写问题,上面的改动就完全够用啦。
内容的提问来源于stack exchange,提问作者zach
相关产品推荐
相关产品推荐

