update

spark 怎么读写 elasticsearch

£可爱£侵袭症+ 提交于 2020-01-07 17:37:42
参考这两篇文章: https://www.bmc.com/blogs/spark-elasticsearch-hadoop/ https://blog.pythian.com/updating-elasticsearch-indexes-spark/ Pre-requisite: 先装上 elasticsearch-hadoop 包 Step-by-Step guide 1. 先在ES创建3个document [mshuai@node1 ~]$ curl -XPUT --header 'Content-Type: application/json' http://your_ip:your_port/school/doc/1 -d '{ "school" : "Clemson" }' [mshuai@node1 ~]$ curl -XPUT --header 'Content-Type: application/json' http://your_ip:your_port/school/doc/2 -d '{ "school" : "Harvard"}' 2. Spark 里面去读,这里是 pyspark 代码 reader = spark.read.format("org.elasticsearch.spark.sql").option("es.read.metadata",

Python MySQL Update

人盡茶涼 提交于 2020-01-07 17:07:50
更新表 可以使用“UPDATE”语句,更新表格内的现有记录: 示例 将地址栏由“Valley 345”改写为“Canyoun 123”: import mysql.connector mydb = mysql.connector.connect( host="localhost", user="你的用户名", passwd="你的密码", database="mydatabase" ) mycursor = mydb.cursor() sql = "UPDATE customers SET address = 'Canyon 123' WHERE address = 'Valley 345'" mycursor.execute(sql) mydb.commit() print(mycursor.rowcount, " 条记录已更新") 复制 注意: 数据库修改后,需要使用mydb.commit()语句提交,不提交,修改不会生效。 注意UPDATE语句中的WHERE子句: WHERE子句指定应该更新哪些记录。如果省略WHERE子句,将更新所有记录! 防止SQL注入 在update语句中,为了防止SQL注入,通常应该转义查询值。 SQL注入是一种常见的web黑客技术,用于破坏或误用数据库。www.cdxsxbx.com mysql.connector 模块有方法可以转义查询值: 示例

【MySQL】悲观锁&乐观锁

送分小仙女□ 提交于 2020-01-07 15:59:39
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 悲观锁与乐观锁是两种常见的资源并发锁设计思路,也是并发编程中一个非常基础的概念。本文将对这两种常见的锁机制在数据库数据上的实现进行比较系统的介绍。 悲观锁(Pessimistic Lock) 悲观锁的特点是先获取锁,再进行业务操作,即“悲观”的认为获取锁是非常有可能失败的,因此要先确保获取锁成功再进行业务操作。通常所说的“一锁二查三更新”即指的是使用悲观锁。通常来讲在数据库上的悲观锁需要数据库本身提供支持,即通过常用的select … for update操作来实现悲观锁。当数据库执行select for update时会获取被select中的数据行的行锁,因此其他并发执行的select for update如果试图选中同一行则会发生排斥(需要等待行锁被释放),因此达到锁的效果。select for update获取的行锁会在当前事务结束时自动释放,因此必须在事务中使用。 这里需要注意的一点是不同的数据库对select for update的实现和支持都是有所区别的,例如oracle支持select for update no wait,表示如果拿不到锁立刻报错,而不是等待,mysql就没有no wait这个选项。另外mysql还有个问题是select for update语句执行中所有扫描过的行都会被锁上

Spring事务失效的 8 大原因,这次可以吊打面试官了!

谁说胖子不能爱 提交于 2020-01-07 12:06:27
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 今天再来一篇《 吊打面试官 》系列,这次真的要吊打了,哈哈!(看往期吊打系列请在后台回复: 吊打 ,我会陆续更新……) 前几天栈长不是发了一篇文章,里面有一个关于事务失效的问题: 用 Spring 的 @Transactional 注解控制事务有哪些不生效的场景? 其中有个热心粉丝留言分享了下,我觉得总结得有点经验,给置顶了: 以上留言来源微信公众号:Java技术栈,关注一起学Java! 但是我觉得还是总结得不够全,今天栈长我再总结一下,再延着这位粉丝的总结再补充完善一下,不用说,我肯定也不见得总结全,但希望可以帮忙有需要的人。 1、数据库引擎不支持事务 这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。 根据 MySQL 的官方文档: https://dev.mysql.com/doc/refman/5.5/en/storage-engine-setting.html 从 MySQL 5.5.5 开始的默认存储引擎是:InnoDB,之前默认的都是:MyISAM,所以这点要值得注意,底层引擎不支持事务再怎么搞都是白搭。 2、没有被 Spring 管理 如下面例子所示: // @Service public class

MyBatis Batch Update Exception使用foreach批量update出错

北慕城南 提交于 2020-01-07 11:21:49
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> #1 问题描述# 通过MyBatis框架,对Mysql数据库做批量更新,对于的Mapper.xml配置: <update id="updateTestcaseNodeBatch" parameterType="List"> <foreach collection="list" item="nodeVO" separator=";"> UPDATE testcase_node <set> name=#{nodeVO.name}, version=#{nodeVO.version}, description=#{nodeVO.description}, last_modify_user=#{nodeVO.createUser}, last_modify_time=#{nodeVO.createTime} </set> <where> object_id=#{nodeVO.objectId} AND root_id=#{nodeVO.rootId} </where> </foreach> </update> 异常信息: ### The error may involve com.hirain.testmanagement.mapper.TestcaseNodeMapper

D3

故事扮演 提交于 2020-01-06 22:01:40
D3的知识体系 1) 选择集、数据绑定、dom操作. 2)比例尺和坐标轴. 3)绘制(几种生成器). a)线段生成器. b)区域生成器. c)弧生成器. d)符号生成器. e)弦生成器. f)对角线生成器. 选择集 d3.select('p'); 只会选择住一个p标签 d3.selectAll('p') 会选中所有的p标签 将数据和dom一一对应(此时p标签和arr个数对应) var p = d3.selectAll('p'); var arr= [3,6,9]; var update = p.data(arr) update.text(d=>d); //将arr插入p标签中; 将数据和dom一一对应(此时p标签和arr个数不对应) var p = d3.selectAll('p'); var arr= [3,6,9,12,15]; var update = p.data(arr) update.text(d=>d); 此时12就不会被渲染进去; 当数据(数组)的长度大于dom的长度时,多的这部分组成的集合就叫做enter dom少了需要添加补足 var enter=update.enter(); enter.append('p') .text(d=>d) 当数据(数组)的长度小于dom的长度时,dom多的这部分就叫做exit dom多了需要删除 var exit = update

ospf除了DR和BDR选举,之后还有主从关系选举!

岁酱吖の 提交于 2020-01-06 15:30:11
两者间没有联系 1,先说主从吧,所有接口网路类型都有,是决定邻接关系建立后谁先发送update的,默认router ID 大的为主,先发update,在DBD包里面有个字段来选举主从。 2,DR,BDR,只在MA网络中有,用来决定是谁来做指定路由器,Dother间保持邻居关系,只和DR为邻接! 来源: 51CTO 作者: 老肖的博客 链接: https://blog.51cto.com/8189171/2464525

Git CMD - push: Update remote refs along with associated objects

百般思念 提交于 2020-01-05 14:15:51
命令格式 git push [--all | --mirror | --tags] [--follow-tags] [--atomic] [-n | --dry-run] [--receive-pack=<git-receive-pack>]       [--repo=<repository>] [-f | --force] [--prune] [-v | --verbose]       [-u | --set-upstream]       [--[no-]signed|--sign=(true|false|if-asked)]       [--force-with-lease[=<refname>[:<expect>]]]       [--no-verify] [<repository> [<refspec>…​]] 命令参数 -q, --quiet   安静模式。 -v, --verbose   详情模式。 实例 a) 将本地分支 master 推送至远程仓库 origin。 $ git push origin master 更多 http://git-scm.com/docs/git-push 来源: https://www.cnblogs.com/huey/p/5091656.html

hdoj 4325 Flowers 线段树+离散化

随声附和 提交于 2020-01-05 03:05:23
hdoj 4325 Flowers 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4325 思路: 直接线段树,按照花的开放区间的大小建树,要注意虽然花的周期数据可能会达到1e9,这样的话线段树开四倍时不可能的。但是我们可以看到一共可能的数据时N行,那么每行两个数,再开4倍的区间。计算下来,在离散化的帮助下,我们只需要开8*N被的线段树即可。 另外询问的数据也需要放入离散化的范围,如果不这样做,有可能在询问时使用lower_bound函数会导致数据的改变,询问的原数据发生变化。 eg:1~3 7~10 询问6,结果应该时0,但因为lower_bound的原因询问时使用7,得到结果1。etc. 代码: #include <iostream> #include <algorithm> #include <stdio.h> #include <string.h> #include <math.h> using namespace std; const int maxn = 1e5+5; struct node { int l,r,sum,lazy; inline void update(int val) { lazy+=val; sum+=val; } } tr[maxn*8]; int a[maxn],b[maxn],c[maxn<<1

关于使用MySQL语法ON DUPLICATE KEY UPDATE单个增加更新及批量增加更新的sql

爷,独闯天下 提交于 2020-01-05 03:02:29
应用场景: 在实际应用中,经常碰到导入数据的功能,当导入的数据不存在时则进行添加,有修改时则进行更新, 在刚碰到的时候,第一反应是将其实现分为两块,分别是判断增加,判断更新,后来发现在mysql中有ON DUPLICATE KEY UPDATE一步就可以完成,感觉实在是太方便了, 该语句是基于唯一索引或主键使用,比如一个字段a被加上了unique index,并且表中已经存在了一条记录值为1。 比如: 下面两个语句会有相同的效果: INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1; UPDATE table SET c=c+1 WHERE a=1; ON DUPLICATE KEY UPDATE后面可以放多个字段,用英文逗号分割。 再现一个例子: INSERT INTO table (a,b,c) VALUES (1,2,3),(4,5,6) ON DUPLICATE KEY UPDATE c=VALUES(a)+VALUES(b); 表中将更改(增加或修改)两条记录。 在mybatis中进行单个增加或修改sql的写法为: <insert id="insertOrUpdateCameraInfoByOne" paramerType="com.pojo.AreaInfo"> insert