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 ...
随机推荐
- linux /usr/bin/ld cannot find 解决
问题: 在linux环境编译应用程式或lib的source code时常常会出现如下的错误讯息: /usr/bin/ld: cannot find -lxxx 这些讯息会随着编译不同类型的source ...
- cxGrid 增加序号 (非数据库绑定模式) (测试通过)
cxGrid 增加序号 (非数据库绑定模式) ----------------------------------- 1. 选在 adoQuery 控件 , 鼠标右键菜单中 选择 Fields Edi ...
- DATEADD和DATEDIFF函数、其他日期处理方法 、已打开的端口、FORMAT函数
DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.FORMAT函数 DATEADD和DATEDIFF函数.其他日期处理方法 .已打开的端口.Format函数 KeyLife富翁笔 ...
- 23. javacript高级程序设计-数据存储
1. 数据存储 1.1 cookie HTTP Cookie, cookie,最初用来在客户端存储回话信息. (1). 限制,不同浏览器对特定域名下的cookie 的个数有限制,每个域名下最好不要操过 ...
- 9.SpringMVC和json结合传递数据 && 10.SpringMVC获取controller中json的数据
- Mathematics:GCD & LCM Inverse(POJ 2429)
根据最大公约数和最小公倍数求原来的两个数 题目大意,不翻译了,就是上面链接的意思. 具体思路就是要根据数论来,设a和b的GCD(最大公约数)和LCM(最小公倍数),则a/GCD*b/GCD=LCM/G ...
- Sql如何自动定时备份数据库
直接上图
- css+html 关于文本的总结(整理中)
布局1:固定行数 <div> <p>示例文字示例文字示例文字示例文字</p> </div> <!-- CSS代码 --> div{ widt ...
- 不同版本CUDA编程的问题
1 无法装上CUDA的toolkit 卸载所有的NVIDIA相关的app,包括NVIDIA的显卡驱动,然后重装. 2之前的文件打不开,one or more projects in the solut ...
- 如何解决exe4j生成exe文件后弹出提示信息
使用exe4j生成exe文件时会提示以上一段信息,这个主要是没有注册导致的,在welcome to exe4j的右下角有一个注册信息的地方,去找个注册码,就OK了. 通用注册码:L-g782dn2d- ...