- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
假设我有一些日志,比如
key1 something
key2 something
key3 something
我可以使用 Pig MultiStorage 根据键将记录输出到多个文件夹。但是在 MultiStorage 中有什么方法可以确保每个键输出只包含一个文件,而不是像 multistorage 那样包含多个小文件。
最佳答案
默认情况下,MultiStorage
会将相同的 key 存储在单个文件中,因此您无需执行任何操作。在下面的示例中,不同的输入文件中有 4 个键,在使用 MultiStorage 选项存储键后,它将创建 4 个目录 (key1,key2,key3 and key4)
并将相应的值存储在一个单个文件。在 MultiStorage 选项中,'0'
只不过是 column 0
。
输入1
key1,aaaa
key2,bbbb
key3,cccc
key2,bbbb
key3,eeee
key3,ffff
输入2
key1,zzzz
key2,xxxx
key4,cccc
key3,yyyy
key4,ffff
输入3:
key1,iiii
key2,jjjj
key3,kkkk
key4,llll
PigScript:
REGISTER '/tmp/piggybank.jar';
A = LOAD 'input*' USING PigStorage(',') AS (f1,f2);
STORE A INTO 'output' USING org.apache.pig.piggybank.storage.MultiStorage('output', '0');
输出$ ls
_SUCCESS key1 key2 key3 key4
输出 $ cat key1/key1-0,000
key1 aaaa
key1 zzzz
key1 iiii
输出 $ cat key2/key2-0,000
key2 bbbb
key2 bbbb
key2 xxxx
key2 jjjj
输出 $ cat key3/key3-0,000
key3 cccc
key3 eeee
key3 ffff
key3 yyyy
key3 kkkk
输出 $ cat key4/key4-0,000
key4 cccc
key4 ffff
key4 llll
选项 2:
另一种选择是使用 SPLIT
命令将相同的 key 存储在单个文件中。
PigScript:
A = LOAD 'input' USING PigStorage(',') AS (f1,f2);
SPLIT A INTO k1 IF (f1=='key1'), k2 IF (f1=='key2'), k3 IF (f1=='key3');
STORE k1 INTO 'OutputKey1' USING PigStorage();
STORE k2 INTO 'OutputKey2' USING PigStorage();
STORE k3 INTO 'OutputKey3' USING PigStorage();
现在输出目录 OutputKey1,OutputKey2,OutputKey3
将存储相应键值的结果。
关于hadoop - Pig MultiStorage 输出到单个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929551/
假设我有一些日志,比如 key1 something key2 something key3 something 我可以使用 Pig MultiStorage 根据键将记录输出到多个文件夹。但是在 M
我正在使用 Pig 的 MultiStorage 将一个输入文件拆分成许多较小的输出文件。 如果有帮助,脚本如下所示: a = load '$FILES' using AvroStorage();
我正在尝试存储一组这样的记录: 2342514224232 | some text here whatever 2342514224234| some more text here whatever
假设我有以下记录集(存储为 Parquet ): 01, John, 250 01, John, 260 01, Daniel, 300 01, Daniel, 400 02, John, 250 0
我是一名优秀的程序员,十分优秀!