UserView--第一种方式set去重,基于Spark算子的java代码实现
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了UserView--第一种方式set去重,基于Spark算子的java代码实现,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2485字,纯文字阅读大概需要4分钟。
内容图文
![UserView--第一种方式set去重,基于Spark算子的java代码实现](/upload/InfoBanner/zyjiaocheng/1318/00d6957f9c124280af33727128fd60fe.jpg)
UserView--第一种方式set去重,基于Spark算子的java代码实现![技术分享](/upload/getfiles/default/2022/11/7/20221107091505339.jpg)
![技术分享](/upload/getfiles/default/2022/11/7/20221107091505694.jpg)
![技术分享](/upload/getfiles/default/2022/11/7/20221107091505850.jpg)
package com.hzf.spark.study; import java.util.HashSet; import java.util.Iterator; import java.util.Set; 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 org.apache.spark.api.java.function.Function; import org.apache.spark.api.java.function.PairFunction; import org.apache.spark.api.java.function.VoidFunction; import org.apache.spark.broadcast.Broadcast; import scala.Tuple2; public class UVAnalysis { public static void main(String[] args) { SparkConf conf = new SparkConf().setAppName("UV_ANA").setMaster("local") .set("spark.testing.memory", "2147480000"); @SuppressWarnings("resource") JavaSparkContext sc = new JavaSparkContext(conf); JavaRDD<String> logRDD = sc.textFile("userLog1"); String str = "View"; final Broadcast<String> broadcast = sc.broadcast(str); uvAnalyze(logRDD, broadcast); } private static void uvAnalyze(JavaRDD<String> logRDD, final Broadcast<String> broadcast) { JavaRDD<String> filteredLogRDD = logRDD.filter(new Function<String, Boolean>() { private static final long serialVersionUID = 1L; @Override public Boolean call(String v1) throws Exception { String actionParam = broadcast.value(); String action = v1.split("\t")[5]; return actionParam.equals(action); } }); JavaPairRDD<String, String> pairLogRDD = filteredLogRDD .mapToPair(new PairFunction<String, String, String>() { private static final long serialVersionUID = 1L; @Override public Tuple2<String, String> call(String val) throws Exception { String pageId = val.split("\t")[3]; String userId = val.split("\t")[2]; return new Tuple2<String, String>(pageId, userId); } }); pairLogRDD.groupByKey().foreach(new VoidFunction<Tuple2<String, Iterable<String>>>() { private static final long serialVersionUID = 1L; @Override public void call(Tuple2<String, Iterable<String>> tuple) throws Exception { String pageId = tuple._1; Iterator<String> iterator = tuple._2.iterator(); Set<String> userSets = new HashSet<>(); while (iterator.hasNext()) { String userId = iterator.next(); userSets.add(userId); } System.out.println("PAGEID:" + pageId + "\t UV_COUNT:" + userSets.size()); } }); } }
![技术分享](/upload/getfiles/default/2022/11/7/20221107091506122.jpg)
原文:http://www.cnblogs.com/haozhengfei/p/34616038af48357d06054611ba71aae3.html
内容总结
以上是互联网集市为您收集整理的UserView--第一种方式set去重,基于Spark算子的java代码实现全部内容,希望文章能够帮你解决UserView--第一种方式set去重,基于Spark算子的java代码实现所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。