next

Spark Shuffle之Write 和 Read

旧巷老猫 提交于 2020-08-11 08:09:41
前面已经和大家提到过Shuffle的具体流程和运用场景,也提到过通常shuffle分为两部分: Map阶段的数据准备和Reduce阶段的数据拷贝处理。 Shuffle Write理解: 提供数据的一端,被称作 Map 端,Map 端每个生成数据的任务称为Mapper;将在map端的Shuffle称之为 Shuffle Write 。 Shuffle Read理解: 接收数据的一端,被称作 Reduce 端,Reduce 端每个拉取数据的任务称为 Reducer;将在Reduce端的Shuffle称之为 Shuffle Read 。 spark中rdd由多个partition组成,任务运行作用于partition。spark有两种类型的task: ShuffleMapTask : 负责rdd之间的transform,map输出也就是 Shuffle Write。 ResultTask ,:job最后阶段运行的任务,也就是action(一个action会触发生成一个job并提交)操作触发生成的task,用来收集job运行的结果并返回结果到driver端。也就是 Shuffle Read 。 write和read原理 job依赖关系RDD结构图如下: 最终得到了整个执行过程,如下图所示: 这个执行过程中间就涉及到shuffle 过程; 前一个stage 的 ShuffleMapTask

【详细教程】Eclipse创建Maven工程

萝らか妹 提交于 2020-08-11 08:09:16
Eclipse创建Maven工程 环境要求(需安装JDK及Maven) 创建maven项目 Eclipse中maven配置项 创建Maven工程 问题解决 环境要求(需安装JDK及Maven) 首先,我们需要安装JDK和Maven,如果已经安装及配置(JDK,Maven)则跳过此步骤。 如果没有安装配置JDK,则参照以下链接。 【详细教程】JDK下载,安装与配置 如果没有安装配置Maven,则参照以下链接。 【详细教程】Maven下载,安装与配置 创建maven项目 Eclipse中maven配置项 配置maven Installation 以及settings,点击 Windows - Preferences - Maven - Installation - Add 点击 Directory… 选择Maven 安装路径,点击 Finish 在我们 Add 的版本上打勾,然后点击 Apply 找到Maven - User Settings,点击Settings的 Browse…,选择Maven安装路径的Settings.xml 确认User Settings和Local Repository已经设定成功,点击 Apply and Close 创建Maven工程 打开Eclipse, 点击" File " - “ New ” - “ Other ” (或者快捷键Ctrl + N)

Git:常用操作

房东的猫 提交于 2020-08-11 07:22:16
一、git clone $ git clone http[s]://example.com/path/to/repo.git/ $ git clone ssh://example.com/path/to/repo.git/ $ git clone git://example.com/path/to/repo.git/ $ git clone /opt/git/project.git $ git clone file:///opt/git/project.git $ git clone ftp[s]://example.com/path/to/repo.git/ $ git clone rsync://example.com/path/to/repo.git/ 二、git remote -v选项,可以参看远程主机的网址。 $ git remote -v origin git@github.com:jquery/jquery.git (fetch) origin git@github.com:jquery/jquery.git (push) 上面命令表示,当前只有一台远程主机,叫做origin,以及它的网址。 -o选项指定 远程主机名字,默认为origin $ git clone -o jQuery https://github.com/jquery/jquery.git $ git

25张图带你深入了解AQS

有些话、适合烂在心里 提交于 2020-08-11 07:02:53
AQS实现原理 AQS中 维护了一个volatile int state(代表共享资源)和一个FIFO线程等待队列(多线程争用资源被阻塞时会进入此队列)。 这里volatile能够保证多线程下的可见性,当state=1则代表当前对象锁已经被占有,其他线程来加锁时则会失败,加锁失败的线程会被放入一个FIFO的等待队列中,比列会被UNSAFE.park()操作挂起,等待其他获取锁的线程释放锁才能够被唤醒。 另外state的操作都是通过CAS来保证其并发修改的安全性。 具体原理我们可以用一张图来简单概括: AQS 中提供了很多关于锁的实现方法, getState():获取锁的标志state值 setState():设置锁的标志state值 tryAcquire(int):独占方式获取锁。尝试获取资源,成功则返回true,失败则返回false。 tryRelease(int):独占方式释放锁。尝试释放资源,成功则返回true,失败则返回false。 这里还有一些方法并没有列出来,接下来我们以ReentrantLock作为突破点通过源码和画图的形式一步步了解AQS内部实现原理。 目录结构 文章准备模拟多线程竞争锁、释放锁的场景来进行分析AQS源码: 三个线程(线程一、线程二、线程三)同时来加锁/释放锁 目录如下: 线程一加锁成功时AQS内部实现 线程二/三加锁失败时AQS中等待队列的数据模型

如何显示已上演的更改?

不羁的心 提交于 2020-08-11 07:01:23
问题: I staged a few changes to be committed; 我上演了一些改变来承诺; how can I see the diff of all files which are staged for the next commit? 如何查看为下一次提交而暂存的所有文件的差异? I'm aware of git status , but I'd like to see the actual diffs - not just the names of files which are staged. 我知道 git状态 ,但我想看到实际的差异 - 而不仅仅是分阶段文件的名称。 I saw that the git-diff(1) man page says 我看到 git-diff(1) 手册页说 git diff [--options] [--] […] git diff [--options] [ - ] [...] This form is to view the changes you made relative to the index (staging area for the next commit). 此表单用于查看您对索引所做的更改(下一次提交的暂存区域)。 In other words, the differences are what

C# 加密–RSA前端与后台的加密&解密

大憨熊 提交于 2020-08-11 07:00:56
1. 前言 本问是根据网上很多文章的总结得到的。 2. 介绍 RSA加密算法是一种非对称加密算法。 对极大整数做因数分解的难度决定了RSA算法的可靠性。换言之,对一极大整数做因数分解愈困难,RSA算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用RSA加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。今天只有短的RSA钥匙才可能被强力方式解破。到2016年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能被解破的。 1983年麻省理工学院在美国为RSA算法申请了专利。这个专利2000年9月21日失效。由于该算法在申请专利前就已经被发表了,在世界上大多数其它地区这个专利权不被承认。 具体介绍可以查看维基百科 https://zh.wikipedia.org/wiki/RSA%E5%8A%A0%E5%AF%86%E6%BC%94%E7%AE%97%E6%B3%95 3. 开始 1)在线RSA加密,请选用PKCS#1来生成公钥与私钥 http://web.chacuo.net/netrsakeypair 点击【生成秘钥对RSA】就可以生成对应的非对称加密公钥与非对称加密似钥 2)前端JS框架 http://travistidwell.com/jsencrypt/ 3)流程图 从上图可以看到

Oracle中单行函数操作详解

我的未来我决定 提交于 2020-08-11 05:59:25
单行函数 --PL/SQL (一)字符函数 函 数 说 明 CONCAT 拼接两个字符串,与 || 相同 INITCA P 将字符串的第一个字母变为大写 INSTR 找出某个字符串的位置 LENGTH 以字符给出字符串的长度 REPLACE 执行字符串搜索和替换 SUBSTR 取字符串的子串 TRIM 裁剪掉前面或后面的字符串 LOWER 将字符串转换成小写 UPPER 将字符串变为大写 实用: --(一)字符函数 -- dual虚表,因为数据不属于任何一个表,用虚表 --1.concat :字符串拼接 拼接两个字符串,与 || 相同 (1) select concat('abc','d') from dual; (2) select 'abc' || '123' from dual; --2. initcap: 收字母大写,将一个单词首字母转换大写,其他字母转换成小写 select initcap('hello') from dual; --3, instr: 找出字符串位置,从1开始计数 select instr('hello','e') from dual; --4. length: 字符串长度 select length('abcd') from dual; --5.替换 replace(字符串,被替换内容,替换内容) select replace('hello','e',

vue+elementui搭建后台管理界面(2首页)

泪湿孤枕 提交于 2020-08-11 05:53:38
1 会话存储 使用html5的 sessionStorage 对象临时保存会话 // 保存会话 sessionStorage.setItem('user', username) // 删除会话 sessionStorage.removeItem('user', username) 2 将所有未登录会话重定向到 /login 用 vue-router 的 beforeEach 实现 beforeEach 方法接收三个参数: to: Route: 即将要进入的目标 路由对象 from: Route: 当前导航正要离开的路由 next: Function: 一定要调用该方法来 resolve 这个钩子。执行效果依赖 next 方法的调用参数。 修改 src/main.js 加入 router.beforeEach((to, from, next) => { if(to.path === '/login'){ sessionStorage.removeItem('user'); } var user = sessionStorage.getItem('user'); if(!user && to.path !== '/login'){ next({ path: '/login' }) }else{ next(); } }) 3 编写首页 使用 elementui 的布局容器 <el

Java知识回顾-基础知识(4)

喜夏-厌秋 提交于 2020-08-11 05:18:20
集合概述 集合架构图 Collection集合主要有List和Set两大接口 List:有序(元素存入集合的顺序和取出的顺序一致),元素都有索引。元素可以重复。 Set:无序(存入和取出顺序有可能不一致),不可以存储重复元素。必须保证元素唯一性。 Iterator Iterator接口,用于遍历集合元素的接口。 在Iterator接口中定义了三个方法: 修饰与类型 方法与描述 boolean hasNext() 如果仍有元素可以迭代,则返回true。 E next() 返回迭代的下一个元素。 void remove() 从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。 使用Iterator迭代器进行删除集合元素,则不会出现并发修改异常 List List是元素有序并且可以重复的集合。 List的主要实现:ArrayList, LinkedList, Vector。 常用方法 ArrayList、LinkedList、Vector 的区别: ArrayList LinkedList Vector(了解) 底层实现 数组 双向链表 数组 同步性及效率 不同步,非线程安全,效率高,支持随机访问 不同步,非线程安全,效率高 同步,线程安全,效率低 特点 查询快,增删慢 查询慢,增删快 查询快,增删慢 默认容量 10 / 10 扩容机制 int

Linux平台达梦数据库V7之归档模式开启方法

女生的网名这么多〃 提交于 2020-08-11 04:59:58
一 前言 备份与恢复过程都依赖归档日志,归档日志是保证数据一致性和完整性的重要保障。配有归档日志的数据库系统在出现故障时丢失数据的可能性更小,这是因为一旦出现介质故障如磁盘损坏时,利用归档日志,系统可被恢复至故障发生的前一刻,也可以还原到指定的时间点。 二 归档日志类型 DM 服务器可以运行在两种模式下,即归档模式和非归档模式,这两种模式可以由用户进行设置,系统在归档模式下运行时,会产生归档日志文件,此时系统管理员应该事先预留出足够的磁盘空间以便存储归档日志文件。通过 dm.ini 和 dmarch.ini 可以配置归档。 2.1 本地归档 Redo 日志本地归档(LOCAL),就是将 Redo 日志写入到本地归档日志文件的过程。配置本地归档情况下,Redo 日志刷盘线程将 Redo 日志写入联机 Redo 日志文件后,对应的 RLOG_BUF 由专门的归档线程负责写入本地归档日志文件中。 与联机 Redo 日志文件可以被覆盖重用不同,本地归档日志文件不能被覆盖,写入其中的 Redo 日志信息会一直保留,直到用户主动删除;如果配置了归档日志空间上限,系统会自动删除最早生成的归档 Redo 日志文件,腾出空间。 DM 提供了按指定的时间或指定的 LSN 删除归档日志的系统函数 (SF_ARCH1VELOG_DELETE_BEFORE_TIME 和SF_ARCH1VELOG