LOAD和PigStorage的一些测试例子 (转)
原地址:http://f.dataguru.cn/thread-233064-1-1.htm
因为理解上的错误,在这里被搞糊涂了。
通过做测试,应该算是澄清了,所以写出来。
假设有个文件叫test,该文件的内容如下(ip地址和url之间有一个空格):
127.0.0.1 dataguru.cn/forum1
192.168.1.1 dataguru.cn/forum2
1.
rs1 = LOAD 'test';
该命令原模原样把test文件的内容载入,rs1只有1个属性
DUMP rs1;
结果如下:
(127.0.0.1 dataguru.cn/forum1)
(192.168.1.1 dataguru.cn/forum2)
注意虽然上面的结果里有个空格,但是那只是因为源文件test中就是这样的,这里只有1个属性,不代表空格前后有2个属性。
rs2 = FOREACH rs1 GENERATE $1;
DUMP rs2;
结果如下:
()
()
上面的结果说明第2个属性不存在($1是指第2个属性)
rs2 = FOREACH rs1 GENERATE $0;
DUMP rs2;
结果如下:
(127.0.0.1 dataguru.cn/forum1)
(192.168.1.1 dataguru.cn/forum2)
上面的结果也证实了rs1只存在1个属性,整行内容都是属性的内容。
2.
rs1 = LOAD 'test' USING PigStorage(' ');
上面的命令,指出载入test文件内容的时候以一个空格作为分隔符
DUMP rs1;
结果如下:
(127.0.0.1,dataguru.cn/forum1)
(192.168.1.1,dataguru.cn/forum2)
注意上面的结果里出现了逗号,表明rs1有多个属性了,逗号前后各1个属性。
rs2 = FOREACH rs1 GENERATE $1;
DUMP rs2;
结果如下:
(dataguru.cn/forum1)
(dataguru.cn/forum2)
同理:
rs2 = FOREACH rs1 GENERATE $0;
DUMP rs2;
结果如下:
(127.0.0.1)
(192.168.1.1)
再次假设文件test的内容如下(ip地址和url之间有一个逗号):
127.0.0.1,dataguru.cn/forum1
192.168.1.1,dataguru.cn/forum2
则:
rs1 = LOAD 'test';
DUMP rs1;
结果为:
(127.0.0.1,dataguru.cn/forum1)
(192.168.1.1,dataguru.cn/forum2)
另:
rs1 = LOAD 'test' USING PigStorage(',');
DUMP rs1;
结果为:
(127.0.0.1,dataguru.cn/forum1)
(192.168.1.1,dataguru.cn/forum2)
看起来好像2个命令的结果一样,实际上它们是不一样的,上面的结果只有1个属性,下面的结果是2个属性,原因前面已经讲了。
再再次假设test的文件内容如下(ip地址和url之间用一个tab键分隔):
127.0.0.1 dataguru.cn/forum1
192.168.1.1 dataguru.cn/forum2
则:
rs1 = LOAD 'test';
DUMP rs1;
结果为:
(127.0.0.1,dataguru.cn/forum1)
(192.168.1.1,dataguru.cn/forum2)
另:
rs1 = LOAD 'test' USING PigStorage('\t');
DUMP rs1;
结果为:
(127.0.0.1,dataguru.cn/forum1)
(192.168.1.1,dataguru.cn/forum2)
这次,这2个结果是一模一样的。
总结:
1.当我们只用LOAD命令,后面不跟USING PigStorage的时候,只能对包含tab键的文件区分属性,不含tab键的行,做为1个属性处理。
2.当我们用LOAD+USING PigStorage的时候,在PigStorage里面可以指定分隔符,如',' ' ' '-' '\t'等等,但是,PigStorage看起来还不支持多个字符做为分隔符,比如我想指定'--'做为分隔符就不行。
3.当我们用DUMP命令查看结果的时候,如果结果里没有出现逗号,那就表明结果只有1个属性;如果结果里出现了逗号,有可能是多个属性;也有可能是1个属性,该属性的内容里本身包含了逗号。
LOAD和PigStorage的一些测试例子 (转)的更多相关文章
- ORM开发之解析lambda实现完整查询(附测试例子)
上次讲解了怎么解析匿名对象(ORM开发之解析lambda实现group查询),这次来实现解析二元运算,完成基本条件语法 先看一个表达式 query.Where(b => b.Number == ...
- php判断数据库是否连接成功的测试例子
php判断数据库是否连接成功的测试例子 如果出现数据库配置不正确的错误,请看php与mysql的配置教程: win7系统下如何配置php-Apache-mysql环境 http://www.cnblo ...
- php多线程抓取信息测试例子
php多线程抓取信息测试例子 PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程.多线程在处理重复性的循环任务,能够大大缩短程序执行时间. PHP扩展下载:htt ...
- Go语言学习之斐波那契数列的测试例子和定义常量方法
### Go语言学习之斐波那契数列的测试例子和定义常量方法 1.go语言中测试文件必须以test.go结尾,比如:fib_test.go 2.测试文件内的方法必须是Test开头,比如:func Tes ...
- 【ELK】Centos7 安装 ELK 7.6.2 和 UI 管理界面以及测试例子
1. 初始化环境 1.0 初始化环境官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config ...
- Jmeter负载测试例子
通过浏览器操作网站在jmeter录屏控制器显示录屏例子,并且通过这例子模拟多用户(线程)来负载测试. 工具/原料 Jmeter 浏览器 1.先在测试计划创建线程组和录制Case 1 1.1 选 ...
- jdbc-mysql测试例子和源码详解
目录 简介 什么是JDBC 几个重要的类 使用中的注意事项 使用例子 需求 工程环境 主要步骤 创建表 创建项目 引入依赖 编写jdbc.prperties 获得Connection对象 使用Conn ...
- cglib测试例子和源码详解
目录 简介 为什么会有动态代理? 常见的动态代理有哪些? 什么是cglib 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写被代理类 编写MethodInterceptor接口实现类 编写 ...
- dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)
目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...
随机推荐
- ios 在程序中使用iCloud
注意,这里说的使用icould不是用icloud进行系统备份,那个功能不需要我们写代码,备份到icloud的东西我们也不能操作.我们指的是以下这3种icloud使用方法: 这里有3中使用方法, Key ...
- Mac Mysql mysql_secure_installation Error: Access denied for user 'root'@'localhost' (using password: YES)
mysql由brew安装, 期间好像自动更新了一次 然后再次执行mysql_secure_installation, 输入root密码后报错, 重装mysql还是不行 Error: Access de ...
- 禁止Linux用户登录方法
我们在做系统维护的时候,希望个别用户或者所有用户不能登录系统,保证系统在维护期间正常运行.这个时候我们就要禁止用户登录. 1.禁止个别用户登录.比如禁止lynn用户登录. passwd -l lynn ...
- Debian 配置apt-get源
1.配置apt-get源 cp /etc/apt/sources.list /etc/apt/sources.listbak #备份原有配置文件 nano /etc/apt/so ...
- 深入浅出JMS(一)——JMS简介
如果手机只能进行实时通话,没有留言和短信功能会怎么样?一个电话打过来,正好没有来得及接上,那么这个电话要传递的信息肯定就收不到了.为什么不能先将信息存下来,当用户需要查看信息的时候再去获得信息呢?伴随 ...
- mysql 删除重复数据保留只保留一条
SELECT * FROM (SELECT addTime FROM motorcade.car_msg_info GROUP BY addTime HAVING COUNT(addTime) > ...
- 中等难度SQL语句(存储过程,分页,拼接字段、游标,日期类型转换,动态行转列,视图)汇总
一.创建存储过程 if Exists(select name from sysobjects where NAME = 'sp1LoginUser' and type='P')drop procedu ...
- 如何把一个excel工作薄中N个工作表复制到另一个工作薄中
一般遇到标题这样的情况,许多人可能会一个一个的复制粘贴,其实完全不必那么麻烦. 你可以按以下步骤来操作: 第一步:打开所有要操作的excel工作薄\n 第二步:按住Shift键,选择所有要复制的工作表 ...
- log4j介绍以及使用教程
一.介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台.文件.GUI组件.甚至是套接 口服务 器.NT的事件记录器.UNIX Syslog ...
- mongodb 3.2 用户权限管理配置
使用mongodb 有段时间了,由于是在内网使用,便没有设置权限,一直是裸奔. 最近有时间,研究了下mongodb 3.2 的用户权限配置,网上有许多用户权限配置的文章,不过大多是之前版本,有些出入, ...