我是HDFS和*nix中的新鸟,我只是好奇,如何在hadoop中打印文件树?
例如,我们可以在任何*nix系统中键入"tree",并给我们一个这样的结果:
[admin~]$tree
.
??? backup_snapshot.sh
??? project
? ??? doc
? ? ??? README
? ??? src
....
Run Code Online (Sandbox Code Playgroud)
这是非常清楚的输出,但由于HDFS不完全符合POSIX,所以我不知道如何在hadoop中打印它.
我的代码是这样的:
pymt = LOAD 'pymt' USING PigStorage('|') AS ($pymt_schema);
pymt_grp = GROUP pymt BY key
results = FOREACH pymt_grp {
/*
* some kind of logic, filter, count, distinct, sum, etc.
*/
}
Run Code Online (Sandbox Code Playgroud)
但现在我发现很多这样的日志:
org.apache.pig.impl.util.SpillableMemoryManager: Spilled an estimate of 207012796 bytes from 1 objects. init = 5439488(5312K) used = 424200488(414258K) committed = 559284224(546176K) max = 559284224(546176K)
Run Code Online (Sandbox Code Playgroud)
其实我找到了原因,大多数原因是有一个"热"键,有些东西比如key = 0作为ip地址,但我不想过滤这个键.有什么办法吗?我在UDF中实现了代数和累加器接口.
我有3个表到批量输入,如何在猪中指定参数?
例如,tmp/001.csv,tmp/002.csv,tmp/003.csv,在pig脚本中,如何编写-param和LOAD语句一次输入这些表?
有人给我举个例子
pig -param nums="'001','002','003'" test.pig
Run Code Online (Sandbox Code Playgroud)
在猪脚本中,
LOAD 'tmp/{nums}.csv' AS ...
Run Code Online (Sandbox Code Playgroud)
但看起来只有001.csv被猪读取.