Apache Pig读取数据和存储数据操作

1.介绍Apache Pig读取数据和存储数据

Apache Pig通常在Hadoop之上工作。Pig是一个分析工具,用于分析Hadoop文件系统中存在的大型数据集。 但是,我们必须首先将数据加载到Apache Pig中,以便使用Apache Pig分析数据。 为此,我们使用Load运算符。 之后,使用Store 运算符,可以将加载的数据存储在文件系统中。

2.Load

Load Operator从文件系统加载数据:

语法:

1. LOAD 'data' [USING function] [AS schema];

命令解释

'data'

单引号表示文件或目录的名称。

一旦我们指定了目录名称,目录中的所有文件都会被加载

USING

如果省略USING子句,则使用缺省装入函数PigStorage

Function

加载函数

我们可以使用内置函数。基本上,PigStorage是默认的加载功能。不需要指定(简单地省略USING子句)。但是,如果我们的数据的格式不能由内置函数处理,那么我们可以编写自己的加载函数

AS

关键词

schema结构信息

通常,用括号括起来,使用AS关键字的模式

Schema指定加载器生成的数据的类型。取决于加载程序,如果数据不符合模式,则有两种可能性,即生成空值或错误。要注意,由于性能的原因,加载器可能不会立即将数据转换为指定的格式。尽管如此,仍然可以对假定指定类型的数据进行操作。

用法

要从文件系统加载数据,我们使用LOAD运算符。

示例

假设我们有一个名为file1.txt的数据文件。 这些字段以制表符分隔。 而且,这些记录是以换行符分隔的。

1 2 3
4 2 1
8 3 4

这里,默认加载函数PigStorage从file1.txt加载数据以形成关系A.另外,两个LOAD语句是等价的。 但是,请注意,这些字段未命名,并且所有字段都默认为bytearray,因为没有指定模式。

1.A = LOAD 'file1.txt';
2.A = LOAD 'file1.txt' USING PigStorage('\t');
3.DUMP A;
(1,2,3)
(4,2,1)
(8,3,4)

这里使用AS关键字指定了一个模式。 而且,这两个LOAD语句是相同的。 而且,为了查看模式,我们也可以使用DESCRIBE和ILLUSTRATE运算符。

1.A = LOAD 'file1.txt' AS (f1:int, f2:int, f3:int); A = LOAD 'file1.txt' USING PigStorage(‘\t’) AS (f1:int, f2:int, f3:int);
2.DESCRIBE A;
3.a: {f1: int,f2: int,f3: int}
4.ILLUSTRATE A;

1542461743170399.png

3.Store

STORE运算符,将结果存储或保存到文件系统。

语法

1. STORE alias INTO 'directory' [USING function];

命令解释

Alias

relation的名称

INTO

关键字

'Directory'

目录的名称。 但是,如果该目录已存在,则STORE操作将失败。

名为part-l的输出数据文件将写入此目录。

USING

关键词

如果省略USING子句,则使用缺省存储函数PigStorage。

Functoin

使用内置函数。PigStorage是默认的store功能。 

但是,如果我们的数据的格式不能由内置函数处理,那么我们可以编写自己的存储功能。

Usage

为了运行Pig latin语句,我们使用STORE运算符。 另外,为了将结果保存到文件系统中,使用Store. 

注意:我们可以使用DUMP来检查中间结果,以便在开发期间调试脚本。

  示例

通过使用PigStorage和星号字符(*)作为字段分隔符,存储数据。

1.A = LOAD 'data' AS (a1:int,a2:int,a3:int);
2.DUMP A;
(1,2,3)
(4,2,1)
(8,3,4)
(4,3,3)
(7,2,5)
(8,4,3)
1.STORE A INTO 'output1' USING PigStorage ('*');
2.CAT output1;
1*2*3
4*2*1
8*3*4
4*3*3
7*2*5
8*4*3

在数据存储之前可以操作数据,如使用CONCAT函数:

1.B = FOREACH A GENERATE CONCAT('a:',(chararray)f1), CONCAT('b:',(chararray)f2), CONCAT('c:',(chararray)f3);
2.DUMP B;
(a:1,b:2,c:3)
(a:4,b:2,c:1)
(a:8,b:3,c:4)
(a:4,b:3,c:3)
(a:7,b:2,c:5)
(a:8,b:4,c:3)
1.STORE B INTO 'output1' using PigStorage(',');
2.CAT output1;
a:1,b:2,c:3
a:4,b:2,c:1
a:8,b:3,c:4
a:4,b:3,c:3
a:7,b:2,c:5
a:8,b:4,c:3

Apache Pig读取数据和存储数据操作

发表评论

邮箱地址不会被公开。 必填项已用*标注

+ 四十 二 = 44

滚动到顶部