c语言sscanf函数的用法是什么
337
2022-11-23
大数据之pig 命令
1.pig与hive的区别 pig和hive比较类似的,都是类sql的语言,底层都是依赖于hadoop 走的mapreduce任务。 pig和hive的区别就是,想要实现一个业务逻辑的话,使用pig需要一步一步操作 而使用hive的话一条SQL就可以搞定。 如果想在很短时间内获取一个比较复杂的业务逻辑处理结果的话,建议使用pig。 如果需要定时执行的一些任务,建议使用hive。
2:pig和mapreduce对比 pig优点:针对一些基本的处理逻辑,已经做好了封装,直接使用对应的命令即可。 但是使用mapreduce代码的话就需要我们自己实现了,并且使用pig还不需要 考虑代码的优化。 使用mapreduce的话会出现数据倾斜的问题,但是使用pig可以避免这个问题。
3:pig的应用场景 最主要的就是数据清洗
4:pig的使用方式 1:在pig(grunt)命令行下执行命令 2:在shell命令下执行 bin/pig -e "A = load 'a.txt' as (id:int,name:chararray);dump A;" 3:使用脚本来执行 vi my.pig -- 单行注释 /* 多行注释 */ A = load 'a.txt' as (id:int,name:chararray); dump A; 执行命令 bin/pig my.pig
5:pig里面的数据类型 基本数据类型 int、long、float、double、chararray、bytearray、boolean、datetime、biginteger、bigdecimal 注意:chararray,表示字符串类型 复合数据类型 tuple、bag、map 注意: tupe (1,2,3) bag {(1,2,3),(1,2,3),(1,2,3)} map [key#value]
6:pig中的一些命令 load:加载数据 A = load 'a.txt' as (id:int,name:chararray) 注意:as 后面指定的文件数据结构信息,这个表示会在当前目录下找a.txt文件, 根据(id:int,name:chararray)对文件中的数据进行解析。这样需要确保文件中 这两列数据中间是使用制表符分割的。 如果加载的数据中多个列之间不是使用制表符分割的,那么在加载数据的时候 就需要执行指定分割符了,例子中是使用逗号进行分割的。 例子:A = load 'a.txt' using PigStorage(",") as (id:int,name:chararray); A 和 = 之间必须有空格。建议命令之间都加上空格,这样看起来简洁,也不容易出错。 describe:类似于sql中的查看表结构 例子:describe A; group : 分组,类似于sql中的groupby 例子:B = group A by id; foreach:对结果集中的数据进行迭代处理 例子:C = foreach A generate id ,name; 或者也可以使用$0类似的命令来获取结果集中的数据 C = foreach A generate $0 ,$1; filter:过滤 例子:D = filter A by id =='zs'; 常用的表达式: == != >= <= > < join:类似于sql中的表链接 内链接: C = join A by id,B by id; 外连接 左外连接:C = join A by id left outer,B by id; 在查询数据的时候,以左侧数据为基准,只返回左侧有的数据 右外连接:C = join A by id right outer,B by id; 在查询数据的时候,以右侧数据为基准,只返回右侧有的数据。 全外连接:C = join A by id full outer,B by id; 在查询数据的时候,两侧数据都可以返回。
7:pig的命令 limit:类似于sql中的limit,可以获取数据集中的一部分数据 例子:B = limit A 10;(取前10条数据) 此种方式pig仍会读取所有数据,只是在返回的时候返回指定条数的数据 order by:排序,类似于sql中的order by 例子:B = order A by id; 默认是正序,想到倒序的话需要在指定字段后面添加desc; order by后面可以指定多个分组字段。 order A by id desc, name desc (对A中的数据进行排序,先根据ID进行倒序排列,如果ID相等,那么使用name字段进行倒序排序。) SPLIT:根据条件对数据集进行切分 例子:split A into x1 if x>10 ,x2 if x==20 ,x3 if (x>1 and x<10); union:类似于sql中的union all 例子:C = union A, B; 一般情况下使用union操作的两个临时变量的数据结构都一样, 如果不一样,可以分下面两种情况 1:A 中id字段是float类型的,B中的id字段是double类型的,这样的话float可以转换成double,所以使用union之后生成的临时变量C中id就是double类型的。 2:A 中id字段是float类型的,B中的id字段是chararray类型的,这样的话两种数据类型不能想换转换,所以执行会报错。
8:pig命令的注意事项 1:所有命令都是以;结尾 2:Pig对命令的大小写没有规定,可以使用大写,也可以小写,但是,针对pig中的函数就必须使用大写,因为这些函数在pig中定义的时候就是大写。 针对PIG处理过程中的临时变量的名称,大小写也是有区分的。 3:在pig中执行的命令其实并不会真正的执行,只有当执行dump或者store命令的时候才会真正指定之前定义的命令。 4:如果某一条命令执行失败了,那么只需要修改这条命令,重新执行即可。
9:pig命令行的扩展 fs:可以在pig中执行hdfs中的命令 sh:可以在pig中执行shell命令(在0.8版本之后才有) clear:清屏 exec:在pig命令行下执行pig脚本 例子:pig my.pig history:查看在pig命令行下执行的命令记录 quit:退出pig命令行
10:pig中的内建函数 avg:求平均数 例子:B = group A by id; C = foreacg B generate group,AVG(score); SUM:求和 MAX:求最大值 MIN:求最小值 上面这几个函数使用方法一样。 注意:函数名称必须要大写。 COUNT():求总数。 1:先分组,再求和。和上面的用法一致。 2:执行类似于select count(*) from table操作。 这样的话也需要对table中的分组,因为是要求所有的数据总数,所以可以把所有数据分到一个组里面, 使用B = group A all;(all相当于是一个关键字) 再使用C = foreach B generate COUNT(A);
10:pig中自定义函数 使用java代码自定义函数,需要创建一个类,集成evalFunc类,实现为实现的exec函数,在这里面就可以对数据进行处理。 先添加maven依赖
岁月里,寒暑交替。人世间,北来南往。铭心的,云烟的。都付往事,不念,不问。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~