spark 统计字符出现次数

spark-shell,读入json文件后,我想统计一个字符串属性上的'a'字符出现的次数,因为刚刚接触,只想到了一个比较笨的办法,先按'a' split,然后数组长度-1就是出现次数:

val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val test_data = sqlContext.read.json("music.json")
test_data.registerTempTable("test_data")
val temp1 = sqlContext.sql("select user.id_str as userid, text from test_data")
val temp2 = temp1.map(t => (t.getAs[String]("userid"),t.getAs[String]("text").split('a').length-1))


但这个方法老报错,具体为什么还不知道?有没有什么快捷可行的办法计算?

阅读 12k
2 个回答

直接替换a为空,比较新字符串与旧字符串长度

在scala中统计字符出现次数最标准的方法应该是

"abcdaaaa".count(_ == 'a')

你可以在scala的REPL中试一下,至于spark,应该类似吧

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进