/*1、统计文本中性别为“男”的用户数。
2、统计每个省(或直辖市)用户数。*/
package thisterm; import java.util.ArrayList; import java.util.List; import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.apache.spark.api.java.JavaRDD; import org.apache.spark.api.java.JavaSparkContext; import scala.Tuple2; /*1、统计文本中性别为“男”的用户数。 2、统计每个省(或直辖市)用户数。*/ public class tongji { public static void main(String[] args) { SparkConf sparkConf = new SparkConf().setAppName("PeopleInfoCalculator").setMaster("local"); JavaSparkContext sc = new JavaSparkContext(sparkConf); JavaRDD<String> rdd1 = sc.textFile ("file:///home/gyq/下载/spark-2.3.2-bin-hadoop2.7/data/test.txt");//*是所有文件内容 List<String> list=new ArrayList<String>(); list.add("北京市"); list.add("天津市"); list.add("上海市"); list.add("重庆市"); JavaRDD<String> manrdd=rdd1.filter(f->f.contains("男"));//男性 long a = manrdd.count(); System.err.println("男性为"+a); JavaPairRDD<String,Integer> prdd1=rdd1.mapToPair(f->{//中国辽宁省,1) (中国 广东省,1)有这种东西存在 return new Tuple2<>(f.split(",")[6].trim(). replaceAll("[\\pP+~$`^=|<>~`$^+=|<>¥×]" , "") .replaceAll("中国", "").trim(). replaceAll("廣東省", "广东省"). replaceAll("広東省", "广东省"). replaceAll("廣西省", "广西省"). replaceAll("辽省", "辽宁省"). replaceAll("北京省", "北京市") ,1);}); JavaPairRDD<String,Integer> prdd5=prdd1.filter(f-> ((f._1.matches(".*省")||list.contains(f._1))&&!isNumeric(f._1));// //(94省,1)有这种东西存在 JavaPairRDD<String,Integer> rdd2=prdd5.reduceByKey((x,y)->x+y); rdd2.foreach(f->System.err.println(f)); sc.stop(); } static boolean isNumeric(String str) {//判读是否含有数字 for (int i = str.length(); --i >= 0;) { int chr = str.charAt(i); if (chr > 48 && chr < 57) return true; } return false; } } ———————————————— 版权声明:本文为CSDN博主「西柚与蓝莓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/m0_53291740/article/details/123458033
台湾是中国的省