import java.io.{File, FileReader}

import java.util

import org.apache.spark.SparkConf

import org.apache.spark.broadcast.Broadcast

import org.apache.spark.sql.SparkSession

import scala.collection.mutable.ArrayBuffer

object SparkTest{

// 使用广播变量过滤 敏感数据

def main(args: Array[String]): Unit = {

val conf = new SparkConf().setMaster("local[2]").setAppName("test")

val spark = SparkSession.builder().config(conf).getOrCreate()

spark.sparkContext.setLogLevel("WARN")

//计算逻辑

compute(spark)

spark.stop()

}

def compute(spark:SparkSession):Unit ={

import spark.implicits._

//加载过敏词汇并存储到 ArrayList 中

val filterDataPath = "G:\\tmp\\b.txt"

val al = new util.ArrayList[String]()

val reader = new java.io.BufferedReader(new FileReader(new File(filterDataPath)))

while (reader.ready()){

val str = reader.readLine()

str.split(" ").foreach(al.add(_))

}

val broadcast: Broadcast[util.ArrayList[String]] = spark.sparkContext.broadcast(al)

spark.sparkContext.textFile("G:\\tmp\\a.txt")

.mapPartitions(ite =>{

// 对源数据进行切割分词,并对每个词进行校验,符合要求的词汇添加到ArrayBuffer中

val arr = ArrayBuffer[String]()

val filterWord:util.ArrayList[String] = broadcast.value

ite.foreach(line => {

line.split(" ").foreach(word => {

if( !filterWord.contains(word) ) arr.+=(word)

})

})

arr.toIterator

})

.collect

.foreach(println)

}

}

spark 获取广播变量_spark使用广播变量相关推荐

  1. Spark 性能常规性能调优广播大变量_大数据培训

    常规性能调优四:广播大变量 默认情况下,task中的算子中如果使用了外部的变量,每个task都会获取一份变量的复本,这就造成了内存的极大消耗.一方面,如果后续对RDD进行持久化,可能就无法将RDD数据 ...

  2. 【Android 电量优化】电量优化 ( 充电状态获取 | 主动获取充电状态 | 广播接受者监听充电状态 | 被动获取充电状态 | 注册空广播接受者获取历史广播 )

    文章目录 一.获取充电状态 二.被动获取充电状态 三.主动获取充电状态 参考 Google 官方文档 : 优化电池续航时间 一.获取充电状态 在应用中执行某些操作 , 如软件云端备份 , 从服务器端获 ...

  3. gl.getAttribLocation P41 获取name参数指定的attribute变量存储地址

    参数 program 指定包含顶点着色器和片元着色器的着色器程序对象 name 指定想要获取其存储地址的attribute变量名称 var VSHADER_SOURCE= 'attribute  ve ...

  4. Installshield获取安装包版本的系统变量是IFX_PRODUCT_VERSION

    Installshield获取安装包版本的系统变量为IFX_PRODUCT_VERSION 当笔记记下来,很简单的一个变量,不过IS里查系统变量是让人头大,知道就是知道,不知道查起来查死人 转载于:h ...

  5. Spark基础学习笔记09:Scala变量与数据类型

    文章目录 零.本讲学习目标 一.变量声明 (一)简单说明 (二)利用val声明变量 1.声明方式 2.案例演示 (三)利用var声明变量 1.声明方式 2.案例演示 (四)换行输入语句(续行) (五) ...

  6. QT for android 获取PDA扫码的广播数据

    QT for android 获取PDA扫码的广播数据 前记 笔者接触到的PDA扫码枪,有三种, 一种是蓝牙枪,连接到手机或者电脑上之后,可以直接把扫描到的数据传送到焦点所在的文本框中:另外两种是普通 ...

  7. shell字段拼接日期_通过shell脚本获取日期,并赋给变量(转)

    通过shell获取当前8位日期,并赋给变量,并且使用变量作为文件名,建立文件夹 代码如下: ls_date=`date +%Y%m%d` mkdir ${ls_date} 上面两句代码虽然简单 但是在 ...

  8. 通过shell脚本获取日期,并赋给变量

    本文转载自: http://www.cnblogs.com/oliverqin/p/5865656.html 作者:OliverQin 转载请注明该声明. 通过shell获取当前8位日期,并赋给变量, ...

  9. java线程条件变量_使用条件变量(多线程笔记)

    条件变量属性: 使用条件变量可以以原子方式阻塞线程,知道某个特定条件为真为止.条件变量始终与互斥锁一起使用. 使用条件变量,线程可以以原子方式阻塞,知道满足某个条件为止.对掉件的测试时在互斥锁的保护下 ...

最新文章

  1. [转]linux tr命令详解
  2. 富士康第三季度净利润10.9亿美元 同比下滑8.7%
  3. 八大基本数据类型对应的八大包装类(含对应面试题解析)
  4. 主流mes厂商_MES为什么可以成为企业核心
  5. 第一篇:Dapper快速学习
  6. 让不支持h5新标签的浏览器支持新标签
  7. [vue] 你知道v-model的原理吗?说说看
  8. MVC(dotnet)
  9. linux有关信号的FAQ
  10. Spark Structured : java.lang.RuntimeException: Offsets committed out of order: 2 followed by 0
  11. Thread 1: signal SIGABRT
  12. python实现windows Service服务程序
  13. 基于DEAP库的python进化算法-1
  14. 计算机系统的软件有,计算机系统软件有哪些
  15. VS Code 的粘性滚动预览 - 类似于 Excel 的冻结首行
  16. 51单片机学习历程(一)单片机入门
  17. Chromium浏览器的一些使用总结
  18. android tv盒子哪个好用,电视盒子什么牌子好?内行人都选这五款好用又不贵的机型...
  19. Linux下rsh服务配置
  20. html语言中的双冒号,css单冒号和双冒号用法和区别

热门文章

  1. 解决pytorch DataLoader 加载数据报错UnicodeDecodeError: ‘utf-8‘ codec can‘t decode byte 0xe5 in position 1023
  2. Bash、Terminal通过tab忽略大小写自动补全命令行提示
  3. nginx作用_云服务器:详解Nginx启用proxy_buffer缓冲
  4. C#巧妙实现服务器端应用程序和asp网页交互
  5. bzoj 4596: [Shoi2016]黑暗前的幻想乡
  6. 关于 iOS 证书,你必须了解的知识
  7. HBase 中文文档0.97
  8. sshd被攻击的自动防御方法v2
  9. A browser for WinCE/Windows base WebKit. (zz)
  10. UCall能真正的免费打电话,爽