spark的广播变量
直接上代码:
包含了,map,filter,persist,mapPartitions等函数
String master = "spark://192.168.2.279:7077";
// jsc = getContext("local[2]");
jsc = getContext(master);
sqlContext = new SQLContext(jsc);
connectionProperties = new Properties();
connectionProperties.put("user", user);
connectionProperties.put("password", password);
connectionProperties.put("driver", "com.mysql.jdbc.Driver");
// emrdataIndedx(filePath, jsc, sqlContext);//加载emrdataindex数据到mysql
JavaRDD<String> javaRDD = jsc.textFile(filePath);
String[] fields = {"pk_dcpv", "code_pvtype", "name_pvtype", "code_ord", "empi", "code_sex"
, "name_sex", "birthday", "age", "code_dept", "name_dept", "bed", "pk_dcordrisreq"
, "code_req", "code_rep", "code_rep_type", "name_rep_type", "code_state", "name_state"
, "code_eu_type", "name_eu_type", "code_eu_item", "name_eu_item", "code_part"
, "name_part", "create_time", "code_pres", "parent_code"};
String[] old_type = {"D", "GYN", "X ", "MR ", "L05", "L04",
"L12", "B ", "OTHC", "DOS", "ECG", "CT ", "UIS", "L02",
"RIS", "SY ", "CB ", "L01", "ENT", "L03", "EYE", "NSC",
"L07", "EMG", "NEU", "PTH", "DC", "INF", "GC", "L08",
"L09", "BD", "L26", "ECT", "GM", "GP", "L10", "EDO",
"L11", "DER", "EEG", "URO", "PFT", "L25", "RF", "OTH",
"PIS", "PMR", "PSY", "MPL", "BM", "Z", "EIS", "BED", "BLD",
"L27", "FOD", "R", "GYP", "CTD", "BDT", "L99", "EUS", "HNS",
"L91", "SED", "L28", "F", "IED", "FOW", "L31", "OO", "P01", "L13"};
//广播变量
final Broadcast<String[]> broadcast = jsc.broadcast(old_type);
StructType schema = createStructType(fields);
JavaRDD<Row> mapPartitions1 = javaRDD.mapPartitions(new FlatMapFunction<Iterator<String>, Row>() {
private static final long serialVersionUID = 1L;
ObjectMapper mapper = new ObjectMapper(); @SuppressWarnings("unchecked")
public Iterator<Row> call(Iterator<String> iterator)
throws Exception {
ArrayList<Row> arrayList = new ArrayList<Row>();
// TODO Auto-generated method stub
while (iterator.hasNext()) {
try {
String next = iterator.next();
map_t = mapper.readValue(next, Map.class);
for (Entry<String, Object> entry : map_t.entrySet()) {
map_s.put(entry.getKey(), String.valueOf(entry.getValue()));
}
} catch (Exception e) {
return null;
}
Row createOrdPart3Row = createOrdPart3Row(map_s);
arrayList.add(createOrdPart3Row); }
return arrayList.iterator();
}
});
JavaRDD<Row> mapPartitions2 = mapPartitions1.filter(new Function<Row, Boolean>() {
private static final long serialVersionUID = 1L; public Boolean call(Row row) throws Exception {
// TODO Auto-generated method stub
String pk_dcpv1 = row.getString(0);
String code_pvtype1 = row.getString(1);
String code_rep_type1 = row.getString(15);
return pk_dcpv1.split("_").length == 2
&& (!"".equals(code_pvtype1) || null != code_pvtype1 || !"P".equals(code_pvtype1))
&& Arrays.asList(broadcast.value()).contains(code_rep_type1);
}
});
//broadcast不用就销毁
broadcast.destroy();
JavaRDD<Row> mapPartitions = mapPartitions2.repartition(100);
JavaRDD<Row> persist = mapPartitions.persist(StorageLevel.MEMORY_AND_DISK_SER());
JavaRDD<Row> filter1 = persist.filter(new Function<Row, Boolean>() {
private static final long serialVersionUID = 1L; public Boolean call(Row row) throws Exception {
// TODO Auto-generated method stub
return row.getString(0).startsWith("1");
}
});
spark的广播变量的更多相关文章
- 【Spark篇】---Spark中广播变量和累加器
一.前述 Spark中因为算子中的真正逻辑是发送到Executor中去运行的,所以当Executor中需要引用外部变量时,需要使用广播变量. 累机器相当于统筹大变量,常用于计数,统计. 二.具体原理 ...
- Spark共享变量(广播变量、累加器)
转载自:https://blog.csdn.net/Android_xue/article/details/79780463 Spark两种共享变量:广播变量(broadcast variable)与 ...
- Spark学习之路 (四)Spark的广播变量和累加器
一.概述 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本.这些变量会被复制到每台机器上 ...
- Spark的广播变量模块
有人问我,如果让我设计广播变量该怎么设计,我想了想说,为啥不用zookeeper呢? 对啊,为啥不用zookeeper,也许spark的最初设计哲学就是尽量不使用别的组件,他有自己分布式内存文件系统, ...
- Spark学习之路 (四)Spark的广播变量和累加器[转]
概述 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的是这个函数所用变量的一个独立副本.这些变量会被复制到每台机器上,并 ...
- Spark(八)【广播变量和累加器】
目录 一. 广播变量 使用 二. 累加器 使用 使用场景 自定义累加器 在spark程序中,当一个传递给Spark操作(例如map和reduce)的函数在远程节点上面运行时,Spark操作实际上操作的 ...
- Spark大师之路:广播变量(Broadcast)源代码分析
概述 近期工作上忙死了--广播变量这一块事实上早就看过了,一直没有贴出来. 本文基于Spark 1.0源代码分析,主要探讨广播变量的初始化.创建.读取以及清除. 类关系 BroadcastManage ...
- Spark RDD持久化、广播变量和累加器
Spark RDD持久化 RDD持久化工作原理 Spark非常重要的一个功能特性就是可以将RDD持久化在内存中.当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内 ...
- 【Spark调优】Broadcast广播变量
[业务场景] 在Spark的统计开发过程中,肯定会遇到类似小维表join大业务表的场景,或者需要在算子函数中使用外部变量的场景(尤其是大变量,比如100M以上的大集合),那么此时应该使用Spark的广 ...
随机推荐
- Ribbon【自定义客户端】
Ribbon的加载策略是懒加载,即第一次请求的时候才加载对应上下文,正是这个原因,很多时候第一次调用显得很慢,甚至会超时,所以,可以通过指定ribbon具体服务名称来开启饿加载,即在工程启动的时候,加 ...
- QT 设置程序图标
1.应用窗口左上角的图标.状态栏上显示的图标用setWindowIcon()函数: 2.可执行程序的图标设置: (1).右键项目添加一个资源文件 (2).导入.ico文件图标
- PAT(B) 1064 朋友数(Java)
题目链接:1064 朋友数 (20 point(s)) 题目描述 如果两个整数各位数字的和是一样的,则被称为是"朋友数",而那个公共的和就是它们的"朋友证号". ...
- php 判断请求是否是json
$object =file_get_contents("php://input"); $arr = is_json($object); if($arr){ var_dump($ar ...
- shell 学习笔记4-shell内置变量命令
一.shell 的一些内置命令 常用的一内部命令有:echo.eval.exec.export.read.shift 1.echo命令-在屏幕中输出信息 1)说明 格式:echo args #< ...
- Spring Cloud Alibaba学习笔记(8) - RocketMQ术语与概念
Topic 一类消息的集合,RocketMQ的基本订阅单位 部署结构 Name Server Name Server 为 producer 和 consumer 提供路由信息. 相对来说,namese ...
- C#汉字转换成全拼的拼音
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.T ...
- win10 总是很快自动关机 无人参与系统睡眠超时设置
解决WIN10隔几分钟就自动黑屏睡眠的方法!_Win10之家原文是卸载了电源驱动,下面是在评论里看到的方法: 这是系统无人值守时睡眠时间的设定,默认是两分钟.解决方法:1.运行注册表管理器,win+r ...
- Windows下编译 Hadoop
Windows下编译 Hadoop-2.9.2 系统环境 系统: Windows 10 10.0_x64 maven: Apache Maven 3.6.0 jdk: jdk_1.8.0_201 Pr ...
- 【转载】C#将字符串中字母全部转换为大写或者小写
在C#的编程开发过程中,有时候判断字符串是否相等时,并不关注字母的大小写,此时在C#中可以使用ToUpper方法将字符串中所有的字母转换为大写,使用ToLower方法可以将字符串中所有字母转换为小写. ...