日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

Spark SQL UDF2的使用

發(fā)布時(shí)間:2023/12/3 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Spark SQL UDF2的使用 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Spark SQL? UDF2的使用 繼續(xù)之前的UDF1進(jìn)行說(shuō)明: UDF1博客地址點(diǎn)擊打開(kāi)鏈接 與UDF1的區(qū)別在于兩個(gè)參數(shù): 需求: 獲取文本中的兩個(gè)數(shù)字 計(jì)算每行中數(shù)字的和 文本: 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; /** * 張建設(shè) * 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(); } } 結(jié)果: +----+----+---+
|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]
第二次成功了


總結(jié)

以上是生活随笔為你收集整理的Spark SQL UDF2的使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。