hadoop - 通过抛出错误对组内的记录进行抽样

标签 hadoop group-by apache-pig sampling

示例数据:(tsv 文件:sampl)

1 a

2 b

3 c

raw= load 'sampl' using PigStorage() as (f1:chararray,f2:chararray);
grouped = group raw by f1;

describe grouped;
fields = foreach grouped {
    x = sample raw 1;

    generate x;
}

当我运行它时,我在 x = sample raw 1; 行收到错误 错误 1200:不匹配的输入“原始”需要 LEFT_PAREN

是否不允许对分组记录进行抽样?

最佳答案

您不能在嵌套 block 中使用“sample”命令。这在 pig 中不受支持。
嵌套 block 中只允许少数操作(CROSS、DISTINCT、FILTER、FOREACH、LIMIT 和 ORDER BY)。您必须在嵌套 block 之外使用示例命令。

另一个问题是,您正在使用默认分隔符(即制表符)加载输入数据。但是你的输入数据是用空格分隔的,所以你需要像这样改变你的脚本

raw= load 'sampl' using PigStorage(' ') as (f1:chararray,f2:chararray);

关于hadoop - 通过抛出错误对组内的记录进行抽样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26935622/

相关文章:

hadoop - 使用 Pig 加载默认转储文件

hadoop - pig 使用储钱 jar 处理不正确的数据

scala - 文件合并逻辑 : scala

sql - PostgreSQL 9.3。没有所有列的分组依据

python - Pandas dataframe 多重 groupby 过滤

sql-server - 如何按有拼写错误的列进行分组

hadoop - 无法处理 PIG 中的时间序列数据

hadoop:如何增加失败任务的限制

hadoop - 类型为 boolean 的分区在 Hive 中总是为真

hadoop - 通过第三方工具的 Google Dataproc Hive 实例