transformation

CALL TRANSFORMATION的方法生成XML例程 注:以下内容为转载,ECC6.0之上版本要注意字段的大小写对应关系。 REPORT  z_barry_xml_call. DATA:  BEGIN OF it_xml OCCURS 0,          line(100) TYPE c,        END OF it_xml. DATA: w_xml TYPE string,       w_len TYPE i,       w_fname TYPE string. DATA: BEGIN OF line  , 阅读详情

 

// map,遍历操作集合的每一个元素,处理之后返回,组成一个新的list
val rdd1: RDD[Int] = sc.parallelize( List (5,6,4,7,3,8,2,9,1,10)).map(_*2)

// faltMap,操作的是list<list>,遍历list中的list,对list处理变成一个总的list
val rdd2 = sc.parallelize( Array ("a b c", "d e f", "h i j"))
rdd2.flatMap(_.split(' ')).collect
res3: Array[String] = Array(a, b, c, d, e, f, h, i, j) 
// 第一个faltMap是spark的第二个flatMap是scala的
val rdd3 = sc.parallelize( List ( List ("a b c", "a b b"), List ("e f g", "a f g")))
rdd3.flatMap(_.flatMap(_.split(" "))).collect
res4: Array[String] = Array(a, b, c, a, b, b, e, f, g, a, f, g)

// filter,遍历操作集合的每一个元素,处理之后得到true留下,false过滤掉
val rdd4 = sc.parallelize( List (5,6,4,7,3,8,2,9,1,10)).filter(_ % 2 == 0)
rdd4.collect
res5: Array[Int] = Array(6, 4, 8, 2, 10)

//mapPartitons,遍历出rdd所有的分区,拿到分区后可以对分区内的值进行处理
val rdd1 = sc.parallelize( List (1, 2, 3, 4, 5), 2)
rdd1.mapPartitions(it=>it.map(_*10)).collect
res6: Array[Int] = Array(10, 20, 30, 40, 50)

//mapPartitonsWithIndex,遍历出rdd所有的分区和分区索引值
val rdd1 = sc.parallelize( List (1,2,3,4,5,6,7,8,9), 2)
rdd1.mapPartitionsWithIndex((index,it)=>it.map((index+"fq",_))).collect
res7: Array[(String, Int)] = Array((0fq,1), (0fq,2), (0fq,3), (0fq,4), (1fq,5), (1fq,6), (1fq,7), (1fq,8), (1fq,9))

// sortBy, 排序,第二个参数指定顺序 true 升序,false 降序,默认true
sc.parallelize( List (5,11,22,13,2,1,10)).sortBy(x=>x,true).collect
res9: Array[Int] = Array(1, 2, 5, 10, 11, 13, 22)       

// sortBy, 排序,将参数变成string后在排序
sc.parallelize( List (5,11,22,13,2,1,10)).sortBy(x=>x+"",true).collect
res10: Array[Int] = Array(1, 10, 11, 13, 2, 22, 5)

// sortByKey,根据key排序
val rdd1 = sc.parallelize( List (("dd", 9), ("aa", 8), ("cc", 7), ("bb", 2)))
rdd1.sortByKey(false).collect
res17: Array[(String, Int)] = Array((aa,8), (bb,2), (cc,7), (dd,9))

// groupby,对一堆元组,根据key进行分组,组中元素是元组本身
val rdd1 = sc.parallelize( List (("hello", 9), ("tom", 8), ("kitty", 7), ("tom", 2)))
val rdd2 = rdd1.groupBy(_._1).collect
rdd2: Array[(String, Iterable[(String, Int)])] = Array((tom,CompactBuffer((tom,2), (tom,8))), (hello,CompactBuffer((hello,9))), (kitty,CompactBuffer((kitty,7))))      

// groupByKey,根据key进行分组,组中元素是value集合
val rdd2 = sc.parallelize( List (("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
rdd2.groupByKey().collect
res1: Array[(String, Iterable[Int])] = Array((tom,CompactBuffer(2, 8)), (jerry,CompactBuffer(9)), (shuke,CompactBuffer(7)))

// reduceByKey,根据key进行分组,分完组后,逐个相邻元素进行操作。
val rdd2 = sc.parallelize( List (("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
rdd2.reduceByKey(_+_).collect
res2: Array[(String, Int)] = Array((tom,10), (jerry,9), (shuke,7))

// distinct, 过滤,其实是做了一个reduceBykey
sc.parallelize( List (5,5,6,6,7,8,8,8)).distinct.collect
res3: Array[Int] = Array(6, 7, 8, 5)

// union,两个集合求并集,两个 RDD 类型要一样
val rdd6 = sc.parallelize( List (5,6,4,7), 2)
val rdd7 = sc.parallelize( List (1,2,3,4), 3)
rdd6.union(rdd7).collect
res4: Array[Int] = Array(5, 6, 4, 7, 1, 2, 3, 4)

// intersection,两个集合求交集
val rdd6 = sc.parallelize( List (5,6,4,7))
val rdd7 = sc.parallelize( List (1,2,3,4))
rdd6.intersection(rdd7).collect
res8: Array[Int] = Array(4)

// subtract,两个集合差集
val rdd6 = sc.parallelize( List (5,6,4,7))
val rdd7 = sc.parallelize( List (1,2,3,4))
rdd6.subtract(rdd7).collect
res10: Array[Int] = Array(6, 7, 5)

// join, 内关联,根据key组成一个新的元组,key是相同的key,value是相同key的value的集合
val rdd1 = sc.parallelize( List (("tom", 1), ("jerry", 2), ("kitty", 3)))
val rdd2 = sc.parallelize( List (("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
rdd1.join(rdd2).collect
res12: Array[(String, (Int, Int))] = Array((tom,(1,2)), (tom,(1,8)), (jerry,(2,9)))

// leftOuterJoin, 左关联,根据key组成一个新的元组,key是相同的key,value是相同key的value的组成的some集合,如果匹配不上就是none
val rdd1 = sc.parallelize( List (("tom", 1), ("jerry", 2), ("kitty", 3)))
val rdd2 = sc.parallelize( List (("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
rdd1.leftOuterJoin(rdd2).collect
res13: Array[(String, (Int, Option[Int]))] = Array((tom,(1,Some(2))), (tom,(1,Some(8))), (jerry,(2,Some(9))), (kitty,(3,None)))

// rightOuterJoin, 右关联,根据key组成一个新的元组,key是相同的key,value是相同key的value的组成的some集合,如果匹配不上就是none
val rdd1 = sc.parallelize( List (("tom", 1), ("jerry", 2), ("kitty", 3)))
val rdd2 = sc.parallelize( List (("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
rdd1.rightOuterJoin(rdd2).collect
res1: Array[(String, (Option[Int], Int))] = Array((tom,(Some(1),2)), (tom,(Some(1),8)), (jerry,(Some(2),9)), (shuke,(None,7)))

// fullOuterJoin, 全关联,根据key组成一个新的元组,key是相同的key,value是相同key的value的组成的some集合,如果匹配不上就是none
val rdd1 = sc.parallelize( List (("tom", 1), ("jerry", 2), ("kitty", 3)))
val rdd2 = sc.parallelize( List (("jerry", 9), ("tom", 8), ("shuke", 7), ("tom", 2)))
rdd1.fullOuterJoin(rdd2).collect
res3: Array[(String, (Option[Int], Option[Int]))] = Array((tom,(Some(1),Some(8))), (tom,(Some(1),Some(2))), (jerry,(Some(2),Some(9))), (shuke,(None,Some(7))), (kitty,(Some(3),None)))

// cartesian 笛卡尔积
val rdd1 = sc.parallelize( List ("tom", "jerry"))
val rdd2 = sc.parallelize( List ("tom", "kitty", "shuke"))
rdd1.cartesian(rdd2).collect
res4: Array[(String, String)] = Array((tom,tom), (tom,kitty), (tom,shuke), (jerry,tom), (jerry,kitty), (jerry,shuke))

// aggregateByKey,按照 key 进行聚合,跟 reduceByKey 类似,可以输入两个函数,第一个函数局部聚合,第二个函数全局聚合。初始值自在局部聚合时使用,全局聚合不使用
val pairRDD = sc.parallelize( List (("cat",2), ("cat", 5), ("mouse", 4),
     | ("cat", 12), ("dog", 12), ("mouse", 2)), 2)
pairRDD.aggregateByKey(0)(math. max (_, _), _ + _).collect
pairRDD.aggregateByKey(100)(math. max (_, _), _ + _).collect

// combineByKeycombineByKey,需要输入三个参数,第一个参数为分组后 value 的第一个元素,第二个函数为局部集合函数,第三个函数为全局聚合函数
val pairRDD = sc.parallelize( List (("cat",2), ("cat", 5), ("mouse", 4),
     | ("cat", 12), ("dog", 12), ("mouse", 2)), 2)
pairRDD.combineByKey(x => x, (a: Int, b: Int) => a + b, (m: Int, n: Int) => m + n).collect
res7: Array[(String, Int)] = Array((dog,12), (cat,19), (mouse,6))

// zip,对应角标的元素组合起来
val a = sc.parallelize( List ("dog","cat","gnu","salmon",
     | "rabbit","turkey","wolf","bear","bee"), 3)
val b = sc.parallelize( List (1,1,2,2,2,1,2,2,2), 3)
a.zip(b).collect
res0: Array[(String, Int)] = Array((dog,1), (cat,1), (gnu,2), (salmon,2), (rabbit,2), (turkey,1), (wolf,2), (bear,2), (bee,2))

 

 

 

 

 

 

 

 

 

 

ETL工具Pentaho Kettle的transformation和job集成 1.      Kettle   1.1.       简介 Kettle是一款国外开源的etl工具,纯java编写,数据抽取高效稳定(数据迁移工具)。Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。 2.      集成开发   2.1.       transf 阅读详情

相关推荐

Spark-Transformation以及Action开发实战

Transformation以及Action开发、RDD持久化、Spark共享变量

Grady的博客 1351

[Java] Transformations

/* Use the slash-star style comments or the system won't see your identification information */ /* ID: lincans1 LANG: JAVA TASK: transform */ import java.io.*; import java.util.*; public class transform { private void swap(char[][] a, int i1, int j1

lincs's blog 235

Spark之Transformation入门

目录 1.常用transformation介绍 2.transformation 案例实战 1.常用transformation介绍 map 将RDD中的每个元素传入自定义函数,获取一个新的元素,然后用新的元素组成新的RDD filter 对RDD中每个元素进行判断,如果返回true则保留,返回false则剔...

威少(微笑) 1678

Spark:使用Java实现所有的Transformation操作

完整代码如下package cn.spark.study.core;import java.util.Arrays; import java.util.Iterator; import java.util.List;import org.apache.spark.SparkConf; import org.apache.spark.api.java.JavaPairRDD; import org.a

菜如张学清的博客 889

flink的Transformation-转换算子

Flink 的转换算子构成了其强大的数据处理能力。理解这些算子的作用、输入输出关系以及如何组合使用它们是编写 Flink 应用程序的基础。通常,一个 Flink 作业会由多个转换算子串联或并联而成,形成一个。它们是 Flink 数据处理的核心,负责对数据流或数据集中的元素进行各种操作、处理和计算,从而将输入数据转换成期望的输出形式。选择正确的算子并合理组合它们,是解决特定数据处理问题的关键。好的,我们来详细讲解 Flink 中的。

2301_80954266的博客 880

用 ABAP Identity Transformation 打通 JSON:asJSON、JSON-XML 与 CALL TRANSFORMATION 的底层

SAP JSON 集成实战:ABAP 原生流水线解析 摘要: 本文深入解析 ABAP 原生 JSON 处理流水线,重点介绍 Identity Transformation (ID) 与 sXML 库的协同机制。通过分析 asJSON、JSON-XML 等核心概念,揭示 SAP 如何实现 ABAP 数据与 JSON 的高效互转。文章提供两种典型实现路径:1) 使用 JSON writer 将 ABAP 数据直接序列化为 JSON 字符串;2) 通过 JSON reader 将外部 JSON 精准反序列化为 A

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 802

java通过kettle的API调用已经创建好的转换(transformation)或任务(job)

java通过kettle的API调用已经创建好的转换(transformation)或任务(job)

小镇的博客 9942

一文告诉你:如何在trae中编译运行GD32程序,并让AI帮你修改代码

本文详细介绍了如何将GD32程序如何用官方固件库构建出来,然后从Keil迁移到国产免费工具Trae,并利用AI进行代码修改的全过程。

水滴爬呀爬 2663

用Java理解Spark算子之Transformation算子

前言RDD算子分类,大致可以分为两类,即: Transformation:转换算子,这类转换并不触发提交作业,完成作业中间过程处理。 Action:行动算子,这类算子会触发SparkContext提交Job作业。 因为Action算子比较容易理解,所以这里只解析Transformation算子。其实Transformation算子的解析在网上有很多资源,但是大多都是用scala语言写的例子,这

WRM的博客 5235

国产SR8201F以太网PHY芯片调试避坑指南:从机贴失败到杜邦线救场的实战记录

本文详细介绍了国产SR8201F以太网PHY芯片的调试避坑指南,涵盖硬件设计、PCB布局、SMT贴片及软件驱动等关键环节。通过实战案例解析,帮助工程师解决MII/RMII接口配置、电源设计、信号完整性等典型问题,提升以太网通信稳定性与EMC性能。

c6d7e8f9g的博客 1216

常用transformation介绍

map map:将RDD中的每个元素传入自定义函数,获取一个新的元素,然后用新的元素组成新的RDD。 案例:将集合中每一个元素都乘以2 java: // 构造集合 List numbers = Arrays.asList(1, 2, 3, 4, 5); // 并行化集合,创建初始RDD JavaRDD numberRDD = sc.parallelize(numbers); // 使用

小江专栏 828

利用Android系统漏洞实现后台弹窗(外弹)

关键:从 Android 8.0(API 26)开始,禁止使用 context.sendBroadcast() 发送隐式广播(即没有指定 setPackage() 或明确组件的广播)。demo核心代码展示利用Android显示系统和广播系统的漏洞实现在后台弹窗的功能,支持最新Android15,16版本。核心功能都是在so层去做,大量使用了jni反调, 如果要上架到应用市场,需要对代码做进一步混淆,加固以应对市场安全扫描。3,开启虚拟显示窗口,这是个透明像素窗口。5,可开启一个线程,调用这个外弹窗口。

2018,再出发~ 1316

Glide4.0 Transformation大全,罗列搜集所有Transformation,实现图片的变换

在使用Glide4.X的时候,经常会使用到图片变换的情况,都是网上搜索一番,`Ctrl + C` + `Ctrl + V`,没有系统地去看过这一块东西,网上的资料也很零散,有时候遇到一些较复杂的情况,得搜索好久才能得到自己想要的结果。出现这个痛点后,现准备针对Transformation罗列记录一下........................

朱豪凯的博客 2435

代码解读:使用Stable Diffusion完成相似图像生成任务

作为内容生产重要的一部分,生成相似图像是一项有意义的工作,例如很多内容创作分享平台单纯依赖用户贡献的图片已经不够了,最省力的方法就是利用已有的图片生成相似的图片作为补充。这篇博客详细解读基于Stable Diffusion生成相似图片的原理和代码。

沉迷单车的追风少年 1393

【PINN高级教程】范式融合与前沿应用 第5讲:贝叶斯推断与生成式建模的深度融合

正规化流(Normalizing Flow, NF)通过一系列可逆变换把简单分布映射为复杂后验,从而获得更好的表达能力。算子学习保持映射的物理正确性。贝叶斯推断给出了自然的框架,但直接对高维函数空间做采样(如 MCMC)几乎不可行。1️⃣ 在自己的 PDE 上跑一遍完整的 Bayesian PINN 流模型。的学习机制深度融合,以在保持物理一致性的前提下,高效地从后验分布中采样。2️⃣ 将每个 θ 直接映射到 FNO 权重,得到不同解的采样。的后验 p(θ∣x,y)p(θ∣x,y) 进行近似。

u012133341的博客 474

2.生成Transformation

以下面的WordCount为例//@Override})@Override}).sum(1).print();

一个月只有三十天 841

零基础学习CANoe Panel(17)—— Panel CAPL Function

CANoe内置了几个CAPLFunction,允许我们在CAPL运行时动态的更改Panel控件的属性,比如打开某个panel,禁用某个控件,更改控件颜色等。

蚂蚁小兵 3519

Spark transformation和action的区别

简介: 1,transformation是得到一个新的RDD,方式很多,比如从数据源生成一个新的RDD,从RDD生成一个新的RDD 2,action是得到一个值,或者一个结果(直接将RDDcache到内存中) 所有的transformation都是采用的懒策略,就是如果只是将transformation提交是不会执行计算的,计算只有在action被提交的时候才被触发。   transfo...

zhangbaoanhadoop的博客 5876

【TC3xx芯片】TC3xx芯片STM介绍

TC3xx芯片STM介绍

qq_36056498的博客 2280

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Kettle实现Transformation 循环及跳出

Kettle实现Transformation 循环及跳出 在ETL操作中,经常需要对某个操作进行循环调用,可是使用Kettle工具时,并没有循环的组件可以调用,但在Job中引用Transfor...

cnm123456001的博客 1078

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

CALL TRANSFORMATION的方法生成XML例程 老白

CALL TRANSFORMATION的方法生成XML例程 ...

weixin_34126215的博客 1103

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Glide 的 transformation

Glide 里面内置了一套图片改造机制,名叫 Transformation ;利用这套机制,我们可以轻松实现以下的效果: 调用的方法也很简单,就拿其中一个来举例: RequestOptions requestOptions = new RequestOptions() .transforms(new CenterCrop(), new CircleCrop()); Glide.with(t...

FritzXu的博客 1568

Query Transformation

是指在将用户问题送入。

find_element_by_id的博客 725

Spark RDD算子深度解析:Transformation与Action全掌握

分类算子作用依赖类型map一对一转换窄filter过滤窄flatMap一对多窄groupByKey分组宽聚合宽重分区宽Actionreduce聚合collect收集count计数take取前N保存。

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 4549

pypdf高级教程:使用Transformation实现PDF页面旋转、缩放与平移

pypdf是一个纯Python PDF库,能够对PDF文件的页面进行拆分、合并、裁剪和变换操作。其中,Transformation类是实现PDF页面旋转、缩放与平移的核心工具,让用户可以轻松实现各种复杂的页面变换需求。 ## 一、Transformation基础入门 🚀 Transformation类位于[pypdf/_page.py](https://link.gitcode.com/i/

gitblog_01013的博客 457
上一篇: 泛型界定
下一篇: java-scala
JNWsong
博客等级 码龄9年 287粉丝 204原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值