原地址: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的一些测试例子 (转)的更多相关文章

  1. ORM开发之解析lambda实现完整查询(附测试例子)

    上次讲解了怎么解析匿名对象(ORM开发之解析lambda实现group查询),这次来实现解析二元运算,完成基本条件语法 先看一个表达式 query.Where(b => b.Number == ...

  2. php判断数据库是否连接成功的测试例子

    php判断数据库是否连接成功的测试例子 如果出现数据库配置不正确的错误,请看php与mysql的配置教程: win7系统下如何配置php-Apache-mysql环境 http://www.cnblo ...

  3. php多线程抓取信息测试例子

    php多线程抓取信息测试例子 PHP 5.3 以上版本,使用pthreads PHP扩展,可以使PHP真正地支持多线程.多线程在处理重复性的循环任务,能够大大缩短程序执行时间. PHP扩展下载:htt ...

  4. Go语言学习之斐波那契数列的测试例子和定义常量方法

    ### Go语言学习之斐波那契数列的测试例子和定义常量方法 1.go语言中测试文件必须以test.go结尾,比如:fib_test.go 2.测试文件内的方法必须是Test开头,比如:func Tes ...

  5. 【ELK】Centos7 安装 ELK 7.6.2 和 UI 管理界面以及测试例子

    1. 初始化环境 1.0 初始化环境官网参考 https://www.elastic.co/guide/en/elasticsearch/reference/current/system-config ...

  6. Jmeter负载测试例子

    通过浏览器操作网站在jmeter录屏控制器显示录屏例子,并且通过这例子模拟多用户(线程)来负载测试. 工具/原料   Jmeter 浏览器 1.先在测试计划创建线程组和录制Case   1 1.1 选 ...

  7. jdbc-mysql测试例子和源码详解

    目录 简介 什么是JDBC 几个重要的类 使用中的注意事项 使用例子 需求 工程环境 主要步骤 创建表 创建项目 引入依赖 编写jdbc.prperties 获得Connection对象 使用Conn ...

  8. cglib测试例子和源码详解

    目录 简介 为什么会有动态代理? 常见的动态代理有哪些? 什么是cglib 使用例子 需求 工程环境 主要步骤 创建项目 引入依赖 编写被代理类 编写MethodInterceptor接口实现类 编写 ...

  9. dom4j的测试例子和源码详解(重点对比和DOM、SAX的区别)

    目录 简介 DOM.SAX.JAXP和DOM4J xerces解释器 SAX DOM JAXP DOM解析器 获取SAX解析器 DOM4j 项目环境 工程环境 创建项目 引入依赖 使用例子--生成xm ...

随机推荐

  1. (转载)使用 udev 高效、动态地管理 Linux 设备文件

    概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是 ...

  2. Effective C++ -----条款34:区分接口继承和实现继承

    接口继承和实现继承不同.在public继承之下,derived classes总是继承base class的接口. pure virtual函数只具体指定接口继承. 简朴的(非纯)impure vir ...

  3. 轻轻送送为你的App加点特效

    前言 今天突然在一个应用中看到一个转场动画,蛮有意思的 退出动画 进入动画 ActivityOptionsCompat options = ActivityOptionsCompat.makeScal ...

  4. 【leetcode】Spiral Matrix(middle)

    Given a matrix of m x n elements (m rows, n columns), return all elements of the matrix in spiral or ...

  5. ZendStudio如何汉化

    点击工具栏的help,看图 点击 Install New Sofaware...   看图 然后.... 在地址(12.0的版本):http://download.eclipse.org/techno ...

  6. September 18th 2016 Week 39th Sunday

    Be the king of the spiritual kingdom that is your heart. 在心灵的国土上,做自己的国王. Most often we are not able ...

  7. python基础——高阶函数

    python基础——高阶函数 高阶函数英文叫Higher-order function.什么是高阶函数?我们以实际代码为例子,一步一步深入概念. 变量可以指向函数 以Python内置的求绝对值的函数a ...

  8. Ubuntu自定义服务

    1.准备脚本 准备好一个bash服务脚本,包括start|stop|restart等参数,将脚本文件命名为“服务名”,拷贝到/etc/init.d/目录下. 2.添加服务sudo update-rc. ...

  9. IOS管理文件和目录NSFileManager

    1.常见的NSFileManager文件方法 -(NSData *)contentsAtPath:path //从一个文件读取数据 -(BOOL)createFileAtPath: path cont ...

  10. centos 安装 py pyhs2

    1. yum install gcc-c++ cyrus-sasl-develpip2.7 install pyhs2 --->好像不行,在试试 用于 hive thrift 访问 2. os. ...