这可能是一个简单的问题,但基本上我有一个数据集,我要计算每个国家的女性人数。最终,我希望按国家对每个计数进行分组,但我不确定该值使用什么,因为数据集中没有一个计数列可以用作groupbykey或reducebykey中的值。我曾想过使用reducebykey(),但这需要一个键-值对,我只想对键进行计数,并将计数器作为值。我该怎么办?
val lines = sc.textFile("/home/cloudera/desktop/file.txt")
val split_lines = lines.map(_.split(","))
val femaleOnly = split_lines.filter(x => x._10 == "Female")
这就是我被困住的地方。该国在数据集中的指数也是13。输出应该是这样的:(澳大利亚,201000)(美国,420000)等等,任何帮助都是很好的。谢谢
3条答案
按热度按时间siv3szwd1#
您可以轻松地创建密钥,它不必在文件/数据库中。例如:
3okqufwl2#
您是否考虑过使用dataframesapi操作rdd?
看起来你正在加载一个csv文件,你可以用spark csv来完成。
那么简单的问题(如果您的csv标题中有明显的列名)是:
如果您想更深入地了解这种操作,请参阅以下指南:https://spark.apache.org/docs/latest/sql-programming-guide.html
jdzmm42g3#
你快到了!您只需要一个countbyvalue:
(在你的例子中,我假设你的意思是x(10)而不是x.。\u 10)
总之: