Spark SQL UDF2的使用

Spark SQL  UDF2的使用
继续之前的UDF1进行说明:
UDF1博客地址点击打开链接
与UDF1的区别在于两个参数:
需求: 获取文本中的两个数字 计算每行中数字的和
文本:
1,1
2,2
3,3
4,4
5,5
6,6
7,7
8,8
9,9
10,10
代码:
package com.bynear.spark_sql;

import java.util.ArrayList;
import org.apache.spark.SparkConf;
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.sql.DataFrame;
import org.apache.spark.sql.Row;
import org.apache.spark.sql.RowFactory;
import org.apache.spark.sql.SQLContext;
import org.apache.spark.sql.api.java.UDF2;
import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType;
/**
 * 张建设
 * 2018/4/27
 * 15:41
 */
public class JavaUDF2 {public static void main(String[] args) {SparkConf conf = new SparkConf().setAppName("JavaUDF2").setMaster("local");
        JavaSparkContext jsc = new JavaSparkContext(conf);
        SQLContext sqlContext = new SQLContext(jsc.sc());
        JavaRDD<String> numRDD = jsc.textFile("//Desktop//Spark//JavaUDF2.txt");
        JavaRDD<Row> numRowRDD = numRDD.map(new Function<String, Row>() {@Overridepublic Row call(String line) throws Exception {String[] split = line.split(",");
                return RowFactory.create(Integer.valueOf(split[0]), Integer.valueOf(split[1]));
            }});
        ArrayList<StructField> fields = new ArrayList<StructField>();
        fields.add(DataTypes.createStructField("num1", DataTypes.IntegerType, true));
        fields.add(DataTypes.createStructField("num2", DataTypes.IntegerType, true));
        StructType structType = DataTypes.createStructType(fields);
        DataFrame numDF = sqlContext.createDataFrame(numRowRDD, structType);
        numDF.registerTempTable("table_num");
        sqlContext.udf().register("addSum", new UDF2<Integer, Integer, Integer>() {@Overridepublic Integer call(Integer num1, Integer num2) throws Exception {return num1 + num2;
            }}, DataTypes.IntegerType);
        sqlContext.sql("select num1,num2 ,addSum(num1,num2) as Sum from table_num").show();
        System.out.println("第一次成功了");
        Row[] rows = sqlContext.sql("select num1,num2 ,addSum(num1,num2) as Sum from table_num").collect();
        for (Row row : rows) {System.out.println(row);
        }System.out.println("第二次成功了");

        jsc.stop();
    }
}
结果:
+----+----+---+
|num1|num2|Sum|
+----+----+---+
|   1|   1|  2|
|   2|   2|  4|
|   3|   3|  6|
|   4|   4|  8|
|   5|   5| 10|
|   6|   6| 12|
|   7|   7| 14|
|   8|   8| 16|
|   9|   9| 18|
|  10|  10| 20|
+----+----+---+
第一次成功了
[1,1,2]
[2,2,4]
[3,3,6]
[4,4,8]
[5,5,10]
[6,6,12]
[7,7,14]
[8,8,16]
[9,9,18]
[10,10,20]
第二次成功了


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/326068.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

使用ElasticSearch,Kibana,ASP.NET Core和Docker可视化数据

原文地址&#xff1a;http://www.dotnetcurry.com/aspnet/1354/elastic-search-kibana-in-docker-dotnet-core-app 想要轻松地通过许多不同的方式查询数据&#xff0c;甚至是从未预料到的方式&#xff1f;想要以多种方式可视化日志&#xff1f;同时支持基于时间、文本和其他类…

计算机辐射对人体影响吗,电脑屏幕辐射对人体的危害怎么解决?

现在不光是从事IT职业的人经常用电脑&#xff0c;普通打工族也时常接触电脑&#xff0c;人们用电脑的时间越来越多&#xff0c;电脑屏幕带来的辐射问题随之而来&#xff0c;工作上班用电脑&#xff0c;下班回家看电视剧、打游戏也用电脑&#xff0c;KTV点歌也用触摸屏辐射&…

第二章jQuery选择器

一、jquery选择器的分类&#xff1a; 1.基本选择器 &#xff08;1&#xff09;标签选择器 $(“h2”).css(“color”,“red”); &#xff08;2&#xff09;类选择器 $(".title").css(“color”,“red”); &#xff08;3&#xff09;ID选择器 $("#title").cs…

2017蓝桥杯省赛---java---A---4(方格分割)

题目描述 思路分析 dfs 题目要求沿着格子的边线剪成两个部分&#xff0c;仔细观察&#xff0c;剪开的边线是关于中心点&#xff08;3&#xff0c;3&#xff09;对称的&#xff0c;于是我们从&#xff08;3&#xff0c;3&#xff09;开始搜索&#xff0c;直到搜到边界则退出。…

这些分布式事务的解决方案,你都知道吗

转载自 这些分布式事务的解决方案&#xff0c;你都知道吗 分布式事务是企业集成中的一个技术难点&#xff0c;也是每一个分布式系统架构中都会涉及到的一个东西&#xff0c;特别是在微服务架构中&#xff0c;几乎可以说是无法避免。 数据库事务 在说分布式事务之前&#x…

如何在多个项目中分离Asp.Net Core Mvc的Controller和Areas

前言 软件系统中总是希望做到松耦合&#xff0c;项目的组织形式也是一样&#xff0c;本篇文章将介绍在ASP.NET CORE MVC中怎么样将Controller与主网站项目进行分离&#xff0c;并且对Areas进行支持。 实践 1.新建项目 新建两个ASP.NET Core Web应用程序&#xff0c;一个命名…

SparkSQL中UDAF案例分析

SparkSQL中UDAF案例分析 1、统计单词的个数package com.bynear.spark_sql;import org.apache.spark.sql.Row; import org.apache.spark.sql.expressions.MutableAggregationBuffer; import org.apache.spark.sql.expressions.UserDefinedAggregateFunction; import org.apache.…

第四章选择结构(二)

一、Switch的结构语法&#xff1a; switch&#xff08;变量&#xff09;{ case 1: //代码 break; case 2: //代码 break; default : //代码 break; } 2.switch&#xff1a;相当于一个开关&#xff0c;后面的括号里面可以是int short byte char 枚举类型 String类型的值 3.case后…

河北省计算机对口高考大纲,河北省普通高等学校对口招生英语考试大纲

河北省普通高等学校对口招生英语考试大纲一、考试范围和考试形式河北省中等职业学校对口升学英语考试以教育部颁布的《中等职业学校英语教学大纲》为依据&#xff0c;以中等职业教育课程改革国家规划教材《英语》为主要参考教材&#xff0c;同时结合我省中等职业学校教学情况进…

2017蓝桥杯省赛---java---B---10(k倍区间)

题目描述 标题&#xff1a; k倍区间给定一个长度为N的数列&#xff0c;A1, A2, … AN&#xff0c;如果其中一段连续的子序列Ai, Ai1, … Aj(i < j)之和是K的倍数&#xff0c;我们就称这个区间[i, j]是K倍区间。你能求出数列中总共有多少个K倍区间吗&#xff1f;输入 第一行…

Spring Boot 最佳实践

转载自 Spring Boot 最佳实践 Spring Boot是用于开发微服务的最流行的Java框架。在本文中&#xff0c;我将与您分享自2016年以来我在专业开发中使用Spring Boot所采用的最佳实践。本文基于我的个人经验和认可的Spring Boot方面的专家。 在本文中&#xff0c;我将重点介绍Spr…

第三章选择结构(一)

一、boolean 类型&#xff1a; 值只有两个&#xff1a;true(真)和false(假) 二、常用的关系符&#xff1a; > < > < ! 作用&#xff1a;用来比较运算结果&#xff0c;值是boolean类型。. 三、if选择结构的语法&#xff1a; if(boolean){ 代码块 } 含义&#xff1a…

eq,neq,gt,lt等表达式缩写

eq,neq,gt,lt等表达式缩写 eq 等于neq 不等于gt 大于egt 大于等于lt 小于elt 小于等于like LIKEbetween BETWEEN

asp.net core源码飘香:Configuration组件

简介&#xff1a; 这是一个基础组件&#xff0c;是一个统一的配置模型&#xff0c;配置可以来源于配置文件&#xff08;json文件&#xff0c;xml文件&#xff0c;ini文件&#xff09;&#xff0c;内存对象&#xff0c;命令行参数&#xff0c;系统的环境变量又或者是你自己扩展的…

计算机图形橡皮筋实验报告,弹性或橡皮筋技术

橡皮筋是一种在计算机屏幕上绘制线, 折线, 矩形, 圆形和椭圆形等几何图元的流行技术。它已成为图形用户界面(GUI)不可或缺的一部分, 并成为事实上的标准, 并且几乎被所有基于Windows的应用程序普遍接受。用户通过定位其两个端点以通常的方式指定该线。当我们从第一个端点移动到…

2017蓝桥杯省赛---java---C---9(青蛙跳杯子)

题目描述 题目描述 X星球的流行宠物是青蛙&#xff0c;一般有两种颜色&#xff1a;白色和黑色。X星球的居民喜欢把它们放在一排茶杯里&#xff0c;这样可以观察它们跳来跳去。如下图&#xff0c;有一排杯子&#xff0c;左边的一个是空着的&#xff0c;右边的杯子&#xff0c;每…

青客宝团队redis内部分享ppt

Redis&#xff1a;最好的缓存数据库 说Redis是缓存服务&#xff0c;估计有些人会不开心&#xff0c;因为Redis也可以把数据库持久化&#xff0c;但是在大多数情况Redis的竞争力是提供缓存服务。说到缓存服务必然会想到Memcached&#xff0c;因为几年前Memcached是最流行的缓存服…

你知道面试官是如何刷人的吗

转载自 你知道面试官是如何刷人的吗 对于一个公司来说&#xff0c;执行招聘面试事宜是一个耗时耗钱的项目&#xff0c;从顾问公司和人才中介挑选出合适的简历之后&#xff0c;还要花更多的时间找出合适的候选人。有的时候这些机构会向你保证这些人都是 Java 天才、SQL 专家、…

jQuery动画与事件概念以及语法

一、鼠标单击事件&#xff1a; 语法&#xff1a;KaTeX parse error: Expected EOF, got # at position 3: ("#̲div1").click(fu…("#div1").mouseover(function(){//代码}); 三、鼠标移出事件&#xff1a; 语法&#xff1a;KaTeX parse error: Expected E…

spark submit参数及调优

spark submit参数及调优 原文地址 spark submit参数介绍 你可以通过spark-submit --help或者spark-shell --help来查看这些参数。 使用格式: ./bin/spark-submit \ --class <main-class> \ --master <master-url> \ --deploy-mode <deploy-mode> \ …