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 ...
随机推荐
- selenium处理rich text(富文本框)
WordPress 的 rich text 采用js,先让selenium切换到iframe中 driver.switchTo().frame("content_ifr"); 然 ...
- linux (RHEL) 添加和删除用户
linux添加新用户使用 useradd -----create a new user or update default new user information 删除用户使用userdel -- ...
- NoSQL之【MongoDB】学习(三):配置文件说明
摘要: 继上一篇NoSQL之[MongoDB]学习(一):安装说明 之后,知道了如何安装和启动MongoDB,现在对启动时指定的配置文件(mongodb.conf)进行说明,详情请见官方. 启动Mon ...
- python(pyqt)开发环境搭建
eric+pyqt 安装(python开发工具) 更多 0 Python python Eric是一个开源的.跨平台的python&ruby集成开发环境,基于python和pyqt运行.eri ...
- nyoj138 找球号(二)_离散化
找球号(二) 时间限制:1000 ms | 内存限制:65535 KB 难度:5 描述 在某一国度里流行着一种游戏.游戏规则为:现有一堆球中,每个球上都有一个整数编号i(0<=i< ...
- Mysql 基础3
1. 逗号是个好东西2.对于多条件查询 和范围查询 的灵活运用(and 和or 的灵活运用)in 用的时候注意 补充select * from car where name like '%奥迪%' a ...
- 【leetcode】Insert Interval(hard)★
Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if necessa ...
- 【python】入门学习(一)
主要记录一下与C语言不同的地方和特别需要注意的地方: // 整除 ** 乘方 整数没有长度限制,浮点数有长度限制 复数: >>> 1j*1j (-1+0j) 导入模块: import ...
- 整合Struts2、Hibernate、Spring
将项目中的对象和对象之间的管理,纳入spring容器,由spring管理 1 实现spring+hibernate集成 1.1 新建web项目 建立项目的包结构(package) 1.2加入jar包 ...
- Target runtime Apache Tomcat v6.0 is not defined.错误解决方法
一.背景 最近在使用本地的tomcat进行运行项目的时候,发现出现了如题所述的问题.不知道什么原因,经过努力解决了该问题. 二.解决步骤 右击项目---选择属性---选择targeted runtim ...