首页 文章 精选 留言 我的

精选列表

搜索[Java库],共10000篇文章
优秀的个人博客,低调大师

spark基本操作 java 版

1.map算子 private static void map() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName("map") .setMaster("local"); //创建JavasparkContext JavaSparkContext sc = new JavaSparkContext(conf); //构造集合 List<Integer> numbers = Arrays.asList(1,2,3,4,5); //并行化集合,创建初始RDD JavaRDD<Integer> numberRDD = sc.parallelize(numbers); //使用map算子,将集合中的每个元素都乘以2 JavaRDD<Integer> multipleNumberRDD = numberRDD.map(new Function<Integer, Integer>() { @Override public Integer call(Integer v1) throws Exception { return v1 * 2; } }); //打印新的RDD multipleNumberRDD.foreach(new VoidFunction<Integer>() { @Override public void call(Integer t) throws Exception { System.out.println(t); } }); //关闭JavasparkContext sc.close(); } 2.filter算子 private static void filter() { //创建SparkConf SparkConf conf = new SparkConf() .setAppName("filter") .setMaster("local"); //创建JavaSparkContext JavaSparkContext sc = new JavaSparkContext(conf); //模拟集合 List<Integer> numbers = Arrays.asList(1,2,3,4,5,6,7,8,9,10); //并行化集合,创建初始RDD JavaRDD<Integer> numberRDD = sc.parallelize(numbers); //对集合使用filter算子,过滤出集合中的偶数 JavaRDD<Integer> evenNumberRDD = numberRDD.filter(new Function<Integer, Boolean>() { @Override public Boolean call(Integer v1) throws Exception { return v1%2==0; } }); evenNumberRDD.foreach(new VoidFunction<Integer>() { @Override public void call(Integer t) throws Exception { System.out.println(t); } }); sc.close(); } 3.flatMap算子 Spark 中 map函数会对每一条输入进行指定的操作,然后为每一条输入返回一个对象; 而flatMap函数则是两个操作的集合——正是“先映射后扁平化”: 操作1:同map函数一样:对每一条输入进行指定的操作,然后为每一条输入返回一个对象 操作2:最后将所有对象合并为一个对象 private static void flatMap() { SparkConf conf = new SparkConf() .setAppName("flatMap") .setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); List<String> lineList = Arrays.asList("hello you","hello me","hello world"); JavaRDD<String> lines = sc.parallelize(lineList); //对RDD执行flatMap算子,将每一行文本,拆分为多个单词 JavaRDD<String> words = lines.flatMap(new FlatMapFunction<String, String>() { //在这里,传入第一行,hello,you //返回的是一个Iterable<String>(hello,you) @Override public Iterable<String> call(String t) throws Exception { return Arrays.asList(t.split(" ")); } }); words.foreach(new VoidFunction<String>() { @Override public void call(String t) throws Exception { System.out.println(t); } }); sc.close(); } 4.groupByKey算子 private static void groupByKey() { SparkConf conf = new SparkConf() .setAppName("groupByKey") .setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); List<Tuple2<String, Integer>> scoreList = Arrays.asList( new Tuple2<String, Integer>("class1", 80), new Tuple2<String, Integer>("class2", 90), new Tuple2<String, Integer>("class1", 97), new Tuple2<String, Integer>("class2", 89)); JavaPairRDD<String, Integer> scores = sc.parallelizePairs(scoreList); //针对scoresRDD,执行groupByKey算子,对每个班级的成绩进行分组 //相当于是,一个key join上的所有value,都放到一个Iterable里面去了 JavaPairRDD<String, Iterable<Integer>> groupedScores = scores.groupByKey(); groupedScores.foreach(new VoidFunction<Tuple2<String,Iterable<Integer>>>() { @Override public void call(Tuple2<String, Iterable<Integer>> t) throws Exception { System.out.println("class:" + t._1); Iterator<Integer> ite = t._2.iterator(); while(ite.hasNext()) { System.out.println(ite.next()); } } }); } 5.reduceByKey算子 private static void reduceByKey() { SparkConf conf = new SparkConf() .setAppName("reduceByKey") .setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); List<Tuple2<String, Integer>> scoreList = Arrays.asList( new Tuple2<String, Integer>("class1", 80), new Tuple2<String, Integer>("class2", 90), new Tuple2<String, Integer>("class1", 97), new Tuple2<String, Integer>("class2", 89)); JavaPairRDD<String, Integer> scores = sc.parallelizePairs(scoreList); //reduceByKey算法返回的RDD,还是JavaPairRDD<key,value> JavaPairRDD<String, Integer> totalScores = scores.reduceByKey(new Function2<Integer, Integer, Integer>() { @Override public Integer call(Integer v1, Integer v2) throws Exception { return v1 + v2; } }); totalScores.foreach(new VoidFunction<Tuple2<String,Integer>>() { @Override public void call(Tuple2<String, Integer> t) throws Exception { System.out.println(t._1 + ":" + t._2); } }); sc.close(); } 6.sortByKey算子 private static void sortByKey() { SparkConf conf = new SparkConf() .setAppName("sortByKey") .setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); List<Tuple2<Integer, String>> scoreList = Arrays.asList( new Tuple2<Integer, String>(78, "marry"), new Tuple2<Integer, String>(89, "tom"), new Tuple2<Integer, String>(72, "jack"), new Tuple2<Integer, String>(86, "leo")); JavaPairRDD<Integer, String> scores = sc.parallelizePairs(scoreList); JavaPairRDD<Integer, String> sortedScores = scores.sortByKey(); sortedScores.foreach(new VoidFunction<Tuple2<Integer,String>>() { @Override public void call(Tuple2<Integer, String> t) throws Exception { System.out.println(t._1 + ":" + t._2); } }); sc.close(); } 7.join算子 join算子用于关联两个RDD,join以后,会根据key进行join,并返回JavaPairRDD。JavaPairRDD的第一个泛型类型是之前两个JavaPairRDD的key类型,因为通过key进行join的。第二个泛型类型,是Tuple2<v1, v2>的类型,Tuple2的两个泛型分别为原始RDD的value的类型 private static void join() { SparkConf conf = new SparkConf() .setAppName("join") .setMaster("local"); JavaSparkContext sc = new JavaSparkContext(conf); List<Tuple2<Integer, String>> studentList = Arrays.asList( new Tuple2<Integer, String>(1, "tom"), new Tuple2<Integer, String>(2, "jack"), new Tuple2<Integer, String>(3, "marry"), new Tuple2<Integer, String>(4, "leo")); List<Tuple2<Integer, Integer>> scoreList = Arrays.asList( new Tuple2<Integer, Integer>(1, 78), new Tuple2<Integer, Integer>(2, 87), new Tuple2<Integer, Integer>(3, 89), new Tuple2<Integer, Integer>(4, 98)); //并行化两个RDD JavaPairRDD<Integer, String> students = sc.parallelizePairs(studentList);; JavaPairRDD<Integer, Integer> scores = sc.parallelizePairs(scoreList); //使用join算子关联两个RDD //join以后,会根据key进行join,并返回JavaPairRDD //JavaPairRDD的第一个泛型类型,之前两个JavaPairRDD的key类型,因为通过key进行join的 //第二个泛型类型,是Tuple2<v1, v2>的类型,Tuple2的两个泛型分别为原始RDD的value的类型 JavaPairRDD<Integer, Tuple2<String, Integer>> studentScores = students.join(scores); //打印 studentScores.foreach(new VoidFunction<Tuple2<Integer,Tuple2<String,Integer>>>() { @Override public void call(Tuple2<Integer, Tuple2<String, Integer>> t) throws Exception { System.out.println("student id:" + t._1); System.out.println("student name:" + t._2._1); System.out.println("student score:" + t._2._2); System.out.println("=========================="); } }); sc.close(); } 更深的方法参见:http://blog.csdn.net/liulingyuan6/article/details/53397780http://blog.csdn.net/liulingyuan6/article/details/53410832https://www.2cto.com/net/201608/543044.html 转自:http://blog.csdn.net/sunhaoning/article/details/70505718 本文转自whk66668888 51CTO博客,原文链接:http://blog.51cto.com/12597095/2063767

优秀的个人博客,低调大师

用Java代码调用MaxCompute

MaxCompute的客户端的工具odpscmd是好东西,什么都能干。但是它不方便在自己的代码做很好的集成,毕竟它是个Shell脚本。那有什么办法把MaxCompute的作业、设置和自己的代码做无缝集成呢,MaxComput SDK就能干这个。本文就实际的工作中最常见的几个场景,做一些示例。详细的使用可以在Maven上下到SDK的文档说明。其实这里面的很多写法都是文档里有的,或者在帮助文档里有写过类似的例子。这里就做算是做个整理吧。 对象操作 其实官方的SDK文档里,对这方面的介绍是最多的了,可以参考这里。这里我再针对实际场景里的比较多的创建表和分区做个例子,相信看完这些后对这方面就没有疑惑了 String access_id = "your access id"; String access_key =

优秀的个人博客,低调大师

Java面向对象深入篇

1)成员变量和局部变量的区别(本篇学习王伟和传智刘意) 1.1)在类中的位置不同 成员变量:类中方法外 局部变量:方法定义中或者方法声明上 1.2)在内存中的位置不同 成员变量:在堆中 局部变量:在栈中 1.3)生命周期不同 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法的调用完毕而消失 1.4)初始化值不同 成员变量:有默认值 局部变量:没有默认值,必须定义,赋值,然后才能使用 2)构造器(构造方法、构造函数) [<modifier>] <class_name> ( [<type arg_name >, ..]) { [<statements>] } 2.1)格式: 2.1.1)方法名和类名相同 2.1.2)没有返回值类型,连void都不能有 2.1.3)没有返回值 2.2)构造器特点: 2.2.1)一个类可以有多个构建器,但这些构造器的参数列表必须不同 2.2.2)每个类都会至少有一个构造器,如果没有定义构造器,则系统将自动提供一个默认的不带任何参数的构造器,如果类没有定义构造器,可以用这个默认的构造起来生成一个对象.推荐:永远手动自己给出无参构造方法。 2.3)构造器的作用 用于对对象的数据进行初始化。通过构造器来创建对象,使用new 关键字来创建一个对象new后面调用的是类中的一个构造器。 2.4)给成员变量赋值的方式 2.4.1)setXxx() 2.4.2)带参构造方法 2.5)案例 classStudent{ privateStringname; privateintage; publicStudent(){} publicStudent(Stringname,intage){ this.name=name; this.age=age; } publicStringgetName(){ returnname; } publicvoidsetName(Stringname){ this.name=name; } publicintgetAge(){ returnage; } publicvoidsetAge(intage){ this.age=age; } } 2.5.1)测试 classStudentDemo{ publicstaticvoidmain(String[]args){ //方式1 Students1=newStudent(); s1.setName("张三"); s1.setAge(27); System.out.println(s1.getName()+"---"+s1.getAge()); //方式2 Students2=newStudent("李四",30); System.out.println(s2.getName()+"---"+s2.getAge()); } } 2.5.2)Student s = new Student();做了哪些事情? (1)把Student.class文件加载到内存 (2)在栈内存为s开辟空间 (3)在堆内存为学生对象申请空间 (4)给学生的成员变量进行默认初始化。null,0 (5)给学生的成员变量进行显示初始化。林青霞,27 (6)通过构造方法给成员变量进行初始化。刘意,30 (7)对象构造完毕,把地址赋值给s变量 3、this关键字 3.1)代表当前类的引用对象 哪个对象调用方法,该方法内部的this就代表那个对象 3.2)this的应用场景: 3.2.1)解决了局部变量隐藏成员变量的问题 3.2.2)其实this还有其他的应用 4:封装 4.1)隐藏实现细节,提供公共的访问方式 4.2)好处: A:隐藏实现细节,提供公共的访问方式 B:提高代码的复用性 C:提高代码的安全性 4.3)设计原则 把不想让外界知道的实现细节给隐藏起来,提供公共的访问方式 4.4)private是封装的一种体现。 封装:类,方法,private修饰成员变量 4.5)private关键字 私有的意义,可以修饰成员变量和成员方法 4.5.1)特点: 被private修饰的后的成员只能在本类中被访问 4.5.2)private的应用: 以后再写一个类的时候: 把所有的成员变量给private了 提供对应的getXxx()/setXxx()方法 5、static关键字(理解) 5.1)静态的意思。可以修饰成员变量和成员方法。 5.2)静态的特点: A:随着类的加载而加载 B:优先与对象存在 C:被类的所有对象共享 这其实也是我们判断该不该使用静态的依据。 D:可以通过类名调用 既可以通过对象名调用,也可以通过类名调用,建议通过类名调用。 5.3)静态的内存图 静态的内容在方法区的静态区 5.4))静态的注意事项; A:在静态方法中没有this对象 B:静态只能访问静态(代码测试过) 5.5)静态变量和成员变量的区别 A:所属不同 静态变量:属于类,类变量 成员变量:属于对象,对象变量,实例变量 B:内存位置不同 静态变量:方法区的静态区 成员变量:堆内存 C:生命周期不同 静态变量:静态变量是随着类的加载而加载,随着类的消失而消失 成员变量:成员变量是随着对象的创建而存在,随着对象的消失而消失 D:调用不同 静态变量:可以通过对象名调用,也可以通过类名调用 成员变量:只能通过对象名调用 5.6)main方法是静态的 public:权限最大 static:不用创建对象调用 void:返回值给jvm没有意义 main:就是一个常见的名称。 String[] args:可以接收数据,提供程序的灵活性 成员变量、局部变量和静态变量的区别 http://blog.csdn.net/haovip123/article/details/43883109

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册