hadoop - 如何计算字母的数量,而不是使用 Pig 的单词

标签 hadoop mapreduce apache-pig

各位, 我找到了很多关于计数词的例子,但找不到计数字母。我只是想把单词拆分成字母,然后数一数,但是我的代码是错误的。有人可以帮我弄这个吗?非常感谢。这是我的代码:

A = load './in/*.txt';
B = FOREACH A GENERATE  FLATTEN(TOKENIZE(LOWER((chararray)$0))) as words;
C = FOREACH B GENERATE  FLATTEN(REGEX_EXTRACT_ALL(words, '([a-zA-Z])')) as letter;
D = group C by letter;
E = FOREACH D GENERATE COUNT(C), group;
DUMP E;

最佳答案

改变你对应的行如下:

C = foreach B generate flatten(TOKENIZE(REPLACE(words,'','|'), '|')) as letter;

我使用的技巧是用特殊字符 (|) 替换每个字母边界,然后将其标记为分隔符。您也可以使用不常见的字符串序列来代替特殊字符。

关于hadoop - 如何计算字母的数量,而不是使用 Pig 的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36755025/

相关文章:

hadoop - CSV和序列文本文件格式的数据源,需要作为Hadoop MapReduce作业运行

apache-spark - 使用 Hadoop 以编程方式解压包含多个不相关 csv 文件的文件

hadoop - Hadoop Map/Reduce 程序使用哪种语言? Java 还是 PHP?

caching - 将 URI 作为运行时变量传递给 mapreduce hadoop 中的分布式缓存

python - 使用 map-reduce/itertools 对嵌套迭代求和

java - WritableStringObjectInspector 无法转换为 BooleanObjectInspector

hadoop - 根据列值对数据进行分区

storage - 实现大规模日志文件分析

python - Hadoop:在迭代映射作业之间维护内存缓存

Hadoop 映射减少 : Order of records while grouping