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;
public class tongji {
public static void main(String[] args) {
SparkConf sparkConf = new SparkConf().setAppName("PeopleInfoCalculator").setMaster("local");
JavaSparkContext sc = new JavaSparkContext(sparkConf);
JavaRDD rdd1 = sc.textFile
("file:///home/gyq/下载/spark-2.3.2-bin-hadoop2.7/data/test.txt");//*是所有文件内容
List list=new ArrayList();
list.add("北京市");
list.add("天津市");
list.add("上海市");
list.add("重庆市");
JavaRDD manrdd=rdd1.filter(f->f.contains("男"));//男性
long a = manrdd.count();
System.err.println("男性为"+a);
JavaPairRDD prdd1=rdd1.mapToPair(f->{//中国辽宁省,1) (中国 广东省,1)有这种东西存在
return new Tuple2<>(f.split(",")[6].trim().
replaceAll("[\pP+~$`^=|<>~`$^+=|<>¥×]" , "")
.replaceAll("中国", "").trim().
replaceAll("廣東省", "广东省").
replaceAll("広東省", "广东省").
replaceAll("廣西省", "广西省").
replaceAll("辽省", "辽宁省").
replaceAll("北京省", "北京市")
,1);});
JavaPairRDD prdd5=prdd1.filter(f->
((f._1.matches(".*省")||list.contains(f._1))&&!f._1.contains("台"))&&!isNumeric(f._1));//去掉台湾省
//(94省,1)有这种东西存在
JavaPairRDD 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;
}
}
台湾是中国的省



