首页 文章 精选 留言 我的

精选列表

搜索[from],共10009篇文章
优秀的个人博客,低调大师

ERROR 1415: Not allowed to return a result set from a trigger

触发器中不允许返回结果集,解决方法是顶一个变量,然后将返回值返回给变量。 DROP TRIGGER IF EXISTS `test`.`demo_AFTER_INSERT`; DELIMITER $$ USE `test`$$ CREATE DEFINER=`root`@`%` TRIGGER `test`.`demo_AFTER_INSERT` AFTER INSERT ON `demo` FOR EACH ROW BEGIN set @rev = ""; SELECT OUT2FILE('/tmp/demo.log', CONCAT_WS(',', NEW.id, NEW.name, NEW.sex, NEW.address)) INTO @rev; END$$ DELIMITER ; Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a> 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

ERROR 1415: Not allowed to return a result set from a trigger

触发器中不允许返回结果集,解决方法是顶一个变量,然后将返回值返回给变量。 DROP TRIGGER IF EXISTS `test`.`demo_AFTER_INSERT`; DELIMITER $$ USE `test`$$ CREATE DEFINER=`root`@`%` TRIGGER `test`.`demo_AFTER_INSERT` AFTER INSERT ON `demo` FOR EACH ROW BEGIN set @rev = ""; SELECT OUT2FILE('/tmp/demo.log', CONCAT_WS(',', NEW.id, NEW.name, NEW.sex, NEW.address)) INTO @rev; END$$ DELIMITER ; Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a> 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

ERROR 1415: Not allowed to return a result set from a trigger

DROP TRIGGER IF EXISTS `test`.`demo_AFTER_INSERT`; DELIMITER $$ USE `test`$$ CREATE DEFINER=`root`@`%` TRIGGER `test`.`demo_AFTER_INSERT` AFTER INSERT ON `demo` FOR EACH ROW BEGIN set @rev = ""; SELECT OUT2FILE('/tmp/demo.log', CONCAT_WS(',', NEW.id, NEW.name, NEW.sex, NEW.address)) INTO @rev; END$$ DELIMITER ; Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a> 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

ERROR 1415: Not allowed to return a result set from a trigger

触发器中不允许返回结果集,解决方法是顶一个变量,然后将返回值返回给变量。 DROP TRIGGER IF EXISTS `test`.`demo_AFTER_INSERT`; DELIMITER $$ USE `test`$$ CREATE DEFINER=`root`@`%` TRIGGER `test`.`demo_AFTER_INSERT` AFTER INSERT ON `demo` FOR EACH ROW BEGIN set @rev = ""; SELECT OUT2FILE('/tmp/demo.log', CONCAT_WS(',', NEW.id, NEW.name, NEW.sex, NEW.address)) INTO @rev; END$$ DELIMITER ; Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a> 原文出处:Netkiller 系列 手札 本文作者:陈景峯 转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

优秀的个人博客,低调大师

hadoop from rookie to ninja - 1. Basic Architecture(基础架构)

1. Daemons(守护进程) 新老架构 老的: Apache Hadoop 1.x (MRv1) 新的: Apache Hadoop 2.x (YARN)-Yet Another Resource Negotiator 1-1) Apache Hadoop 1.x (MRv1) 包含如下后台进程: • Namenode (名称节点) • Secondary namenode (第二名称节点) • Jobtracker (工作跟踪器) • Datanode (数据节点) • Tasktracker (任务跟踪器) a) 所有的后台进程是运行在自己的JVM虚拟机中的Java服务。 b) 主从模式 namenode 和 jobtracker 是 master daemons datanode 和 tasktracker 是 slave daemons 2.NameNode(名称节点) 2-1) 名称节点是master daemon, 它负责存储HDFS文件系统上所有文件的位置信息。 名称节点从不存储实际数据,换句话说,它存储所有的元数据(metadata)。 (备注:元数据(Metadata),又称中介数据、中继数据,为描述数据的数据(data about data), 主要是描述数据属性(property)的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。) 2-2) 名称节点在内存(RAM)中维护所有的元数据,这样客户端可以快速得到请求它的响应。 因此,需要在有较多内存分配的服务器上运行名称节点。(非常重要!!) HDFS中的文件数量越多,名称节点所消耗的内存也越高。 2-3) 由于在内存中存储元数据信息,因此名称节点后台进程也同时在硬盘上存储了一个用来持久化元数据的检查点文件,该文件名叫fsimage。 每当集群中的文件发生 新增/删除/更新 操作的时候,动作信息会被更新到一个叫做edits log的日志文件中。 更新完日志后,内存中的元数据信息也会相应地更新。 需要注意的是: fsimage文件不会针对每次写操作进行更新。 有人要问,如果名称节点的后台进程重启了怎么办,信息不都在内存中吗?丢失了呀! 答案是不会,下列操作会发生: 1. 从磁盘上读取fsimage文件的信息并把它加载到内存。 2. 从edits log读取所有的操作信息,并把它还原到内存中。 3. 最后把修改后的内存中的信息再写入磁盘上的fsimage文件。 2-4) Hadoop 1.x名称节点的弱点以及Hadoop 2.x的改进 a. Hadoop 1.x里的名称节点是单节点的,因此,如果该服务器宕机了的话,整个HDFS文件系统将不可使用了。 为了解决这种情况,以前管理员需要配置下,把fsimage同时写到本地磁盘和网络上的远程磁盘。 那台新备份的机器其实相当于冷备份,在名称节点宕机的时候可以临时启动。 b.Hadoop 2.x支持高可用(High Availability - HA) 部署2台名称节点的服务器, 分别是active和passive, 如果active的那台服务器宕机了, passive的那台服务器会接管 控制权,相当于双机热备份。 3. Secondary namenode(第二名称节点)

优秀的个人博客,低调大师

1.Writing R data frames returned from SparkR:::map

stack overflow原文地址 弱鸡小白在使用SparkR处理大规模的R dataframe时想使用map的方式进行数据操作。数据都是结构化的,并且每个分区都是相同的结构。本想的将这些数据作为parquet这样就可以避免collect的Action操作。现在很担心能不能再程序输出的output list后进行write.df的操作,能否使用worker tasks编写替代指定parquet进行操作? 小白的程序如下: #! /usr/bin/Rscript library(SparkR, lib.loc="/opt/spark-1.5.1-bin-without-hadoop/R/lib") source("jdbc-utils.R") options(stringsAsFactors = FALSE) # I dislike having these here but when I move them into main(), it breaks - the sqlContext drops. assign("sc", sparkR.init(master = "spark://poc-master-1:7077", sparkHome = "/opt/spark-1.5.1-bin-without-hadoop/", appName = "Peter Spark test", list(spark.executor.memory="4G")), envir = .GlobalEnv) assign("sqlContext", sparkRSQL.init(sc), envir =.GlobalEnv) #### MAP function #### run.model <- function(v) { x <- v$xs[1] y <- v$ys[1] startTime <- format(Sys.time(), "%F %T") xs <- c(1:x) endTime <- format(Sys.time(), "%F %T") hostname <- system("hostname", intern = TRUE) xys <- data.frame(xs,y,startTime,endTime,hostname,stringsAsFactors = FALSE) return(xys) } # HERE BE THE SCRIPT BIT main <- function() { # Make unique identifiers for each run xs <- c(1:365) ys <- c(1:1) xys <- data.frame(xs,ys,stringsAsFactors = FALSE) # Convert to Spark dataframe for mapping sqlContext <- get("sqlContext", envir = .GlobalEnv) xys.sdf <- createDataFrame(sqlContext, xys) # Let Spark do what Spark does output.list <- SparkR:::map(xys.sdf, run.model) # Reduce gives us a single R dataframe, which may not be what we want. output.redux <- SparkR:::reduce(output.list, rbind) # Or you can have it as a list of data frames. output.col <- collect(output.list) return(NULL) } 小白心里是这样想的,先生成一个名字叫xys的dataframe,两列数据,一列是1:365,另一列是1。通过createDataFrame将其转换成为RDD,然后进行map和reduce的操作。同时编写了一个demo小函数,用来进行map。 程序结果.png 小白同学的心中是充满疑惑的: 并没有想象中的需要避免绝对的collect使用,而去将结果组合作为Parquet进行存储; 同时,也并不确信:::map的函数形式真正实现了并行,难道需要一直申明parallelise 对于小白的疑惑,大腿同学是这样解释的: 假设你的数据差不多是下面这个样子的: rdd <- SparkR:::parallelize(sc, 1:5) dfs <- SparkR:::map(rdd, function(x) mtcars[(x * 5):((x + 1) * 5), ]) 首先给你瞅一眼mtcars的数据: mtcars.png 瞅一眼程序结果: 程序结果.png 同时大腿也给出了自己的思路: 因为要对所有数据的列进行操作,完全可以把它转换成为row-wise的逐行操作类型; rows <- SparkR:::flatMap(dfs, function(x) { data <- as.list(x) args <- list(FUN = list, SIMPLIFY = FALSE, USE.NAMES = FALSE) do.call(mapply, append(args, data))}) sdf <- createDataFrame(sqlContext, rows) head(sdf) 结果.png 大腿这里用了append秒rbind一万条街;用flatmap实现了map实现的捉襟见肘的多分区集合,小白深感佩服。 看到小白一脸葱白的样子,大神接着说: 接下来就可以使用简单的write.df / saveDF了 小白啊,你的问题主要是一开始使用了一个内部方法map,他被从最初版本移除的一个重要原因是如果直接使用是不健全的,而且也不清楚将来会不会被支持,谁知道呢。 于是小白关注了大腿同学。

资源下载

更多资源
Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册