作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我的数据目录(路径:/home/admin/Desktop/data)中有 50 个文本文件。我的任务是扁平化(标记化)文本文件中的数据并将输出存储在 50 个输出文件中。
以下是我为完成这项工作而建立的关系:
--This will load all the 50 text files.
A = Load '/home/admin/Desktop/data' Using PigStorage(',');
--This relation will create every word as a token and will flatten the data.
B = FOREACH A GENERATE FLATTEN(TOKENIZE($0));
STORE B into '/home/ameya/Desktop/PigOutput';
现在,当我执行这个 pig 脚本时,对于 50 个输入文件,我只得到一个输出文件。
如何获得 50 个不同的输出文件,每个文件包含与其输入文件中的数据对应的输出数据?
最佳答案
拆分运算符可用于根据某些表达式将关系的内容划分为两个或多个关系。根据表达式中提供的条件,将执行以下两个中的任何一个:
一个目录中的多个文件,在 pig 中用于加载、展平和存储:
[user1@localhost ~]# ls /pigsamples/mfilesdata/
file1 file2 file3
加载以上目录:
grunt> input_data = LOAD '/pigsamples/mfilesdata' USING PigStorage (',') AS (f1:INT, f2:INT, f3:INT);
grunt> DUMP input_data;
(1,2,3)
(2,3,1)
(3,1,2)
(4,5,6)
(5,6,4)
(6,4,5)
(7,8,9)
(8,9,7)
(9,7,8)
根据您的要求格式化数据。我使用了与问题中相同的操作。
grunt> formatted_data = FOREACH input_data GENERATE FLATTEN(TOKENIZE($0)); //replace with your requirements
使用SPLIT
运算符根据条件将关系拆分为多个关系。
grunt>
SPLIT formatted_data
INTO split1 IF f1 <= 3,
split2 IF (f1 > 3 AND f1 <= 6),
split3 IF f1 > 6; //split based on the column which is unique within all the files
输出:
grunt> DUMP split1;
(1,2,3)
(2,3,1)
(3,1,2)
grunt> DUMP split2;
(4,5,6)
(5,6,4)
(6,4,5)
grunt> DUMP split3;
(7,8,9)
(8,9,7)
(9,7,8)
关于hadoop - PIG 中加载的多个文件的多个输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31898439/
我正在开发一个需要能够平均三个数字的 Facebook 应用程序。但是,它总是返回 0 作为答案。这是我的代码: $y = 100; $n = 250; $m = 300; $number = ($y
我只是无法弄清楚这一点,也找不到任何对我来说有意义的类似问题。我的问题:我从数据库中提取记录,并在我的网页上以每个面板 12 条的倍数显示它们。因此,我需要知道有多少个面板可以使用 JavaScrip
我是一名优秀的程序员,十分优秀!