使用Pig进行数据处理、分析时,需要使用其提供的Pig Latin脚本语言编写相应脚本,这些脚本执行时会被转换为Map和Reduce任务(类似Spark),Pig Engine组件接受Pig Latin...脚本为输入,并转换为作业; Why Pig 可以把Pig看作是SQL,相对于java等高级语言来说,它的功能更加简单直接,更容易上手,同时又不像直接写MapReduce程序那样考虑太多分布式相关内容,因此...Pig是一种较为适中的用于在分布式集群上进行作业编写的脚本语言; Component in Pig Parser:解析Pig脚本,检查其语法以及其他杂项,输出有向无环图DAG,其中运算符为节点,数据流为边...; Script:以脚本方式运行Pig代码,类似python脚本; UDF:嵌入java等语言使用; Grunt Shell in Pig sh:在grunt shell中使用任何shell命令,比如ls...、DISTINCT(从关系中删除重复行)、FOREACH(基于数据列生成数据转换)、GENERATE、STREAM(使用外部程序转换关系)、JOIN(连接两个或多个关系)、COGROUP(将数据分组为两个或多个关系
shallow :默认为True,即只比较os.stat()获取的元数据(创建时间,大小等信息)是否相同,
hadoop fs -ls /pig命令查看在pig中预处理数据启动 pig -x mapreduce数据预处理# 注册 piggybank.jar 库,以便使用其自定义函数REGISTER '/opt.../module/pig/lib/piggybank.jar';# 加载北京公交信息的 CSV 文件,并指定字段及其类型bus_info = LOAD '/pig/Processed_Beijing_Bus_Info.csv...chararray, fan_info:chararray, fan_buff:chararray );# 输出加载的数据以供检查DUMP bus_info;# 通过 DISTINCT...操作去重数据distinct_data = DISTINCT bus_info;# 输出去重后的数据以供检查DUMP distinct_data;# 过滤掉包含空值的记录filter_data = FILTER...distinct_data BY bus_name !
pig是hadoop的一个子项目,用于简化MapReduce的开发工作,可以用更人性化的脚本方式分析数据。...grunt> b = GROUP a all; 对a进行分组,这里由于没有指定分组条件,所以相当每一行都是分组组件,这一条命令的主要作用是实现行转列,执行完以后,可以查下b的结构和值: ? ?...grunt> c = FOREACH b GENERATE COUNT(a.value); 由于b只有一行了,所以上面的语句其实就是求该所有a.value列的个数,即输入文件的总数。...grunt> c = FOREACH b GENERATE AVG(a.value); d) 求和(SUM) grunt> c = FOREACH b GENERATE SUM(a.value); e) 去重复...(DISTINCT) DISTINCT的思路跟前面略有不同,关键在于如何分组,见下面的命令: grunt> b = GROUP a by value; 对a分组,分组依据为value值,这样重复的值就归到一组了
copyToLocal, COUNT, cp, cross -- D datetime, %declare, %default, define, dense, desc, describe, DIFF, distinct...FOREACH是等价的 3,别名定义(首位字符必须为字母,其他位置可以是字母,数字,下划线中的任意一个) 4,集合类型 Bags ,类似table,可以包含多个row Tuples,类似一行行...会产生笛卡尔集 12,distinct,去重,与关系型数据库不同的是,不能对单个field去重,必须是一个row,如果你想对单filed去重,那么就需要先把这个filed,单独提取出来,然后在distinct...里面的存储结果的函数,可以将一个集合以指定的存储方式,存储到指定的地方 26,stream,提供了以流的方式可以在pig脚本中,与其他的编程语言交互,比如将pig处理的中间结果,传给python,perl...脚本中,使用imprt关键词引入另外一个pig脚本
批处理模式(脚本) - 你可以通过将Pig Latin脚本写入具有 .pig 扩展名的单个文件中,以批处理模式运行Apache Pig。...grunt> Dump; (1,Rajiv,Hyderabad) (2,siddarth,Kolkata) (3,Rajesh,Delhi) Pig 数据模型 pig 的表不是矩形的(即每一行都有相同的列...如果人为把每一行都设置成具有相同的列,则叫做一个关系;Pig 的物理存储结构是 JSON 格式。 Pig Latin 语句 在使用Pig Latin处理数据时,语句是基本结构。...is_child from tmp_table; Pig tmp_table_distinct = foreach tmp_table generate is_child; tmp_table_distinct...= distinct tmp_table_distinct; dump tmp_table_distinct; 参考文章:https://www.w3cschool.cn/apache_pig/apache_pig
下载脚本文件:TSQLFundamentals2008.zip 一、集合运算 1.集合运算 (1)对输入的两个集合或多集进行的运算。 (2)多集:由两个输入的查询生成的可能包含重复记录的中间结果集。...2)UNION 会删除重复行,所以它的结果就是集合; (3)相同的行在结果中只出现一次。...返回 h 行; (2)INTERSECT集合运算在逻辑上首先删除两个输入多集中的重复行(把多集变为集合),然后返回只在两个集合中都出现的行; (3)INTERSECT 会删除重复行,所以它的结果就是集合...会把cutid=NULL,empid=1的行过滤掉 用方案二查询出来结果为51行,不会把cutid=NULL,empid=1的行过滤掉 用下面的方案可以解决上面的问题,需要处理cutid=NULL,或者...不会把cutid=NULL,empid=1的行过滤掉 用方案二查询出来结果为5行,会把cutid=NULL,empid=1的行过滤掉 用下面的方案可以解决上面的问题,需要处理cutid=NULL,或者empid
3.4.7distinct用法 (1)在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数...MySQL规定,当非聚合函数中的列不存在于group by子句中,则选择每个分组的第一行。 (3)count distinct统计符合条件的记录。...(2)union与union all的区别 union用于合并两个或多个select语句的结果集,并消去联合后表中的重复行。union all则保留重复行。...Read Uncommitted:读取未提交内容 所有事务都可以读取未提交事务的执行结果,也就是允许脏读。但不允许更新丢失。...读取数据的事务允许其他事务继续访问该行数据,但是未提交的写事务将会禁止其他事务访问该行。 Repeatable Read:可重复读取 禁止不可重复读取和脏读取。
Latin的运行 支持本地和集群运行 本地 pig_path/bin/pig –x local wordount.pig 集群 PIG_CLASSPATH=hadoop_conf_dir pig_path...一个tuple相当于sql中的一行,而tuple的字段相当于sql中的列。 tuple常量使用圆括号来指示tuple结构,使用逗号来划分tuple中的字段。如(‘bob’,55)。...如果用户没有为数据提供一个模式,pig仍然可以处理数据,它会根据脚本的如何处理数据的做出一个最合理的猜测。...chararray, date:chararray, dividends:float); startswithcm = filter divs by symbol matches 'CM.*'; Distinct...(去重): -- dictinct.pig daily = load 'NYSE_daily' as (exchange:chararray, symbol:chararray); uniq = distinct
Pig解决方案 由于篇幅有限,Pig脚本的处理逻辑不详细介绍,这里主要从数据流的角度描述Pig脚本对数据的加工流程,如下图: ?...通过Pig的客户端日志,可以得到Pig Latin编译器把Pig脚本翻译成的MapReduce Job DAG图: ?...Spark解决方案 Spark提供了Scala过程式语言的编程方式,跟Pig Latin类似,Spark具有join、grouby、union等数据处理算子,distinct、sum等操作也可以通过对RDD...Cache机制:Spark的RDD提供Cache特性,使得RDD的数据可以被重复利用而不用重新计算。...对比Spark和Pig的运行结果,Spark的运行时间和计算成本比Pig都有明显减少,DAG模型减少了HDFS读写、cache减少重复数据的读取,这两个优化即能减少作业运行时间又能降低成本;而资源调度次数的减少能提高作业的运行效率
熟悉Hadoop的应用开发人员可能有这样的感受,对于一般的数据分析应用,用Hive或者Pig去编写程序,比直接用MapReduce效率要高很多,后期程序维护过程中修改Hive、Pig脚本也比MapReduce...2.2 Pig On Storm的实现思路 Pig的架构大致如下图所示,即一个Pig Latin脚本经过Antlr处理转变为AST(抽象语法树)和Logical Plan,Logical Plan经过优化再转变为...2.3 Pig On Storm编译Pig代码流程 1) IDE编辑书写Pig脚本:用户在支持Pig语法高亮的IDE中,根据业务实际需求书写Pig脚本,每一个Pig语句独占一行。...,其数据输入是确定的且是有范围的(通常为HDFS上的文件),因此在Pig 中显得很自然的Group、Distinct、Order by等集合运算符,当其作用到Storm这种数据输入范围无边界的系统时应该被赋予不同的语义...第②行:分割从文件中读取出来的每一行数据(这行代码与Pig完全一样)。
01 SQL SQL,脚本查询语言,处理代码的顺序不是按照脚本语言的顺序,这点是不同于其他编程语言的最明显特征。...如果将脚本语言分解为一系列的语句,那么这些语句的先后执行顺序是怎样的呢? 这篇文章,主要总结SQL语句的执行顺序。...FROM (2) ON (3) JOIN (4) WHERE (5) GROUP BY (6) WITH {CUBE | ROLLUP} (7) HAVING (8)SELECT (9) DISTINCT...DISTINCT:将重复的行从VT8中删除,得到VT9。 ORDER BY:将VT9中的行按ORDER BY子句中的列列表顺序,生成一个游标(VC10)。...为了得到我们预期的结果我们就需要在on子句指定学生和成绩表的关系(学生.姓名=成绩.姓名),那么我们是否发现在执行第二步的时候,对于没有参加考试的学生记录就不会出现在vt2中,因为他们被on的逻辑表达式过滤掉了
foreach B generate count A.age;(注意要带括号,并且count必须为大写) 2012-09-11 20:20:12,831 [main] ERROR org.apache.pig.tools.grunt.Grunt...1200: mismatched input 'A' expecting SEMI_COLON Details at logfile: /home/hadoop/pig...描述 加载与存储 LOAD 将数据从外部文件或其它存储中加载数据,存入关系 STORE 将一个关系存放到文件系统或其它存储中 DUMP 将关系打印到控制台 过滤 FILTER 从关系中删除不需要的行...DISTINCT 从关系中删除重复的行 FOREACH… GENERATE 对于集合的每个元素,生成或删除字段 STREAM 使用外部程序对关系进行变换 SAMPLE 从关系中随机取样 分组与连接
简介在MySQL中,有时候我们需要从表中检索唯一的、不重复的数据。这时,我们可以使用DISTINCT关键字来过滤掉重复的数据行。...在本文中,我们将深入探讨MySQL中DISTINCT的用法以及如何在查询中使用它来得到不重复的结果集。基本语法DISTINCT关键字用于在SELECT语句中指示查询结果中去除重复行,它放在列名前面。...具体内容如下:IDNameClass1JohnA2JaneB3MichaelA4JaneC5JohnA使用DISTINCT过滤重复数据:查询不重复的姓名:SELECT DISTINCT Name FROM...这样,我们可以轻松地获得不重复的结果集。请注意,DISTINCT关键字适用于多列的组合,它会根据指定的列组合来去除重复行。...如果你使用DISTINCT关键字后仍然看到重复行,可能是因为所选列的数据类型或者空格等原因造成的,可以使用函数进行数据清洗或转换。
后续如果碰到新的需求可能会将脚本贴在这里。...400 假设上表是学生的考试成绩,现在我们想知道表格中共有多少个学生,即获取第一列不重复的值 select distinct name from record; 返回结果为: name zhangsan...想要实现类似于:“name字段去重,对于重复值取分数最高”这种效果需要自己实现,distinct不可以。...having 语句 having 语句一般与group 语句一起使用,作用为:对分组后的数据进行筛选,类似于where子句的语法,但是where子句作用于每一独立行,having语句作用于每一分组后的行...示例: select name,sum(score) from record having sum(score) > 650; 该语句会按name分组查询并取到score的总和,且过滤掉总和小于650的行
VT2中 JOIN:如果指定了OUTER JOIN(如LEFT OUTER JOIN ,RIGTH OUTER JOIN),那么保留表中未匹配的行作为外部行添加到虚拟表VT2中,产生虚拟表VT3。...:去除重复数据,产生虚拟表VT9 ORDER BY:将虚拟表VT9中的记录按照进行排序操作,产生虚拟表VT10 LIMIT:取出指定行的数据,产生虚拟表VT11,并返回给查询用户...添加外部行的工作就是在VT2表的基础上添加保留表中被过滤条件过滤掉的数据,非保留表的数据被赋予NULL值,最后生成虚拟表VT3 在这个例子中,保留表时customers,设置保留表的过程如下: customers...这张内存临时表的表结构和上一步产生的虚拟表一样,不同的是对进行DISTINCT操作的列增加了一个唯一索引,以此来去除重复数据。 由于在这个SQL查询中未指定DISTINCT,因此跳过本步骤。...另外对使用了GROUP BY的查询,再使用DISTINCT是多余的,因为已经进行分组,不会移除任何行 10 应用ORDER BY子句 根据ORDER BY子句中指定的列对上一个输出的虚拟表进行排列,返回新的虚拟表
my.oschina.net/leejun2005/blog/78904 但是这种写法在HQL中直接报语法错误了,下面我们只能用hive udf的思路来解决了: 排序city和value,然后对city计数,最后where过滤掉...city列计数器大于k的行即可。...注:测试数据由以下脚本生成: http://my.oschina.net/leejun2005/blog/76631 PS: 如果说hive类似sql的话,那pig就类似plsql存储过程了:程序编写更自由...pig中还能直接通过反射调用java的静态类中的方法,这块内容请参考之前的相关pig博文。...group by后获取top值 http://blog.csdn.net/liuzhoulong/article/details/7789183 hive中自定义函数(UDAF)实现多行字符串拼接为一行
DISTINCT 关键字 DISTINCT 是 MySQL 中用于从查询结果中去除重复记录的关键字。当需要获取唯一值或组合时,可以在 SELECT 语句中使用DISTINCT。...DISTINCT 在这里作用于多个列,只有当 name 和 city 的组合不同的时候,记录才会被保留。相同的 name 和 city 组合(如 Alice 的记录)会被过滤掉。...注意事项 性能影响: 使用DISTINCT可能会对查询性能产生负面影响,因为它需要数据库引擎对结果集进行额外的处理,以去除重复的行。在大数据集上,这种性能影响可能尤为明显。...与聚合函数结合使用: 虽然DISTINCT通常用于去除重复行,但它也可以与某些聚合函数(如COUNT)结合使用,以计算唯一值的数量。...但是,请注意,GROUP BY通常与聚合函数一起使用,而DISTINCT则用于去除重复行。在某些情况下,你可能需要决定是使用DISTINCT还是GROUP BY,或者是否可以将它们结合使用。
散仙在上篇文章中,介绍过如何使用Pig来进行词频统计,整个流程呢,也是非常简单,只有短短5行代码搞定,这是由于Pig的内置函数TOKENIZE这个UDF封装了单词分割的核心流程,当然,我们的需求是各种各样的...脚本里注册jar包(依赖的jar包也需要注册,例如本例中的ansj的jar),关于如何打包,注册,请参考散仙上篇文章,不要问我上篇文章在哪里,就在这文章里。...最后来解释下,在一篇文章里,最多的词无疑是标点符号,和一些副词了,这不仅在中文里是这样,在英文里同样是这样的,最多的词往往是a,the,an,this之类的,副词什么的,所以统计词频前,一般会过滤掉一些无意义的词...,这些散仙就不细说了,相信搞过搜索和自然语言处理的人,都很清楚,从结果前几个结果来看,确实证明了标点和一些连词与副词的频率最高,终于在结果的第六行,出现了第一个有意义的高频词,南水北调,频率是18次,这直接反映了本文的主题...(2)注册jar包时,如果有依赖,也需要将依赖jar包注册在pig里。 (3)在真实的应用中,统计分析前,最好将一些无用的数据给过滤掉。
上述算法很简单,用脚本可以很快搞定。但如果需要用PIG任务来写,第3个步骤就没有这么容易实现了。...不过好在PIG脚本可以调用其他语言编写的UDF(User Define Function)来完成某些复杂的计算逻辑,我们就采用此种方案。...如何使用Jython实现PIG UDF请参考官方文档 https://pig.apache.org/docs/r0.9.1/udf.html 先来看PIG脚本代码: REGISTER 'pycalc.../pig-0.16.0/thirdparty/KVLoader-0.5.1.jar A = LOAD 'data.log' USING com.tencent.gdata.pig.KVLoader('...pid as pid, grpid as grpid, ts as ts, value as value; uniq_D = DISTINCT
领取专属 10元无门槛券
手把手带您无忧上云