Pig FILTER 返回我数不清的空袋子

2024-02-15

我正在尝试计算数据集中有多少个值与过滤条件匹配,但当过滤器不匹配任何条目时,我遇到了问题。

我的专栏里有很多data结构,但本例中只使用了三个:key- 该集合的数据键(不是唯一的),value- 记录的浮点值,nominal_value- 代表标称值的浮点数。

我们现在的用例是查找比标称值低 10% 或更多的值的数量。

我正在做这样的事情:

filtered_data = FILTER data BY value <= (0.9 * nominal_value);
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE COUNT(filtered_data.value);
DUMP filtered_count;

在大多数情况下,没有任何值超出标称范围,因此filtered_data为空(或 null。不知道如何辨别哪个。)。这导致filtered_count也为空/空,这是不可取的。

我怎样才能构造一个语句,在以下情况下返回 0 值:filtered_data是空/空吗?我尝试了在网上找到的几个选项:

-- Extra parens in COUNT required to avoid syntax error
filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE COUNT((filtered_data.value is null ? {} : filtered_data.value));

结果是:

Two inputs of BinCond must have compatible schemas. left hand side: #1259:bag{} right hand side: #1261:bag{#1260:tuple(cf#1038:float)}

And:

filtered_count = FOREACH (GROUP filtered_data BY key) GENERATE (filtered_data.value is null ? 0 : COUNT(filtered_data.value));

这会导致空/空结果。


按照您现在的设置方式,您将丢失有关错误值计数为 0 的任何键的信息。相反,我建议保留所有键,以便您可以看到计数为 0 的肯定确认,而不是通过缺席来推断。为此,只需使用一个指标,然后SUM that:

data2 =
    FOREACH data
    GENERATE
        key,
        ((value <= 0.9*nominal_value) ? 1 : 0) AS bad;
bad_count = FOREACH (GROUP data2 BY key) GENERATE group, SUM(data2.bad);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Pig FILTER 返回我数不清的空袋子 的相关文章

  • Cygwin 和 Apache Pig - 令人困惑的伪 grunt>

    我正在尝试在运行 Vista 操作系统的 Windows PC 上安装 Apache Pig 以便将其用作学习工具 我不打算在这台机器上使用 Pig 进行任何严肃的数据处理 单节点 单 JVM x local设置是我想要的 我有 Windo
  • 在 Pig 中提取 CSV 文件的第一行

    我有几个 CSV 文件 标题始终是文件中的第一行 在 Pig 中将该行作为字符串从 CSV 文件中取出的最佳方法是什么 不能使用 sed awk 等进行预处理 我尝试使用常规 PigStorage 和 Piggybank CsvLoader
  • 是否可以将参数值传递给 UDF 构造函数?

    我编写了一个带有构造函数参数的 UDF 我已经成功初始化并使用它grunt as grunt gt register mylib jar grunt gt define Function com company pig udf MyFunc
  • 在 Pig 中删除单列

    我正在按大约 20 个 ID 的列表过滤表 现在我的代码如下所示 A LOAD ids txt USING PigStorage B LOAD massive table USING PigStorage C JOIN A BY 0 B B
  • 将 IN 子句与 PIG FILTER 结合使用

    PIG 支持 IN 子句吗 filtered FILTER bba BY reason not in a b c d 或者我应该把它分成多个 OR Thanks 您可以使用 Apache DataFu 中的以下 udf 代替 这将帮助您避免
  • 根据 Pig 中的数据将关系拆分为不同的输出文件

    目前 我的数据如下所示 1 A a 1 A b 2 B b 2 B c 3 A a 3 B b 3 C c 我想根据第一列中的数据将它们存储在不同的文件中 所以 我希望我的输出与此类似 1 out包含 A a A b 2 out包含 B b
  • 在 hadoop 中使用 Pig 中的正则表达式

    我有一个包含用户 tweetid tweet userid 的 CSV 文件 396124436476092416 Think about the life you livin but don t think so hard it hurt
  • 从udf访问hdfs文件

    我想通过 udf 调用访问文件 这是我的脚本 files LOAD docs in USING PigStorage AS id stopwords id2 file buzz FOREACH files GENERATE pigbuzz
  • 在 Pig 中解析复杂的 JSON 字符串

    我想在 Pig 中解析一串复杂的 JSON 具体来说 我希望 Pig 将我的 JSON 数组理解为一个包 而不是单个字符数组 使用 JsonLoader 时 我可以通过指定架构轻松完成此操作 如下所示这个问题 https stackover
  • 将行值聚合到列中

    我有这样的数据 2013 11 localhost kern 2013 11 localhost kern 2013 11 192 168 0 59 daemon 2013 12 localhost kern 2013 12 localho
  • PIG 中的 GROUP 和 COGROUP 有什么区别?

    我知道 Group 不能处理多个元组 因此我们在 PIG 中有 COGROUP 然而 今天检查时 GROUP 命令对我有用 我正在使用 PIG 0 12 0 我的命令和输出如下 grunt gt grpvar GROUP C by 2 B
  • 在 Pig 中编写 udf 有点像教程

    我是 Pig 新手 并且正在尝试编写 udf 函数 所以基本上这是问题陈述 我有一个这样的虚拟数据 user id movie id date time stamp 所以我想做的就是这个 如果交易是在 9 am and 11 am gt b
  • 如何在有或没有 Pig 的情况下使用 Cassandra 的 Map Reduce?

    有人可以解释 MapReduce 如何与 Cassandra 6 配合使用吗 我已经阅读了字数统计示例 但我不太明白 Cassandra 端与 客户端 端发生的情况 https svn apache org repos asf cassan
  • strsplit 问题 - Pig

    我有以下元组 H1 我想将其 0 拆分为元组 但是我总是收到错误消息 DUMP H1 item32 item31 1 m FOREACH H1 GENERATE STRSPLIT 0 50 ERROR 1000 解析期间出错 第 1 行第
  • 使用loadfunc pig UDF将protobuf格式文件加载到pig脚本中

    我对猪的了解很少 我有 protobuf 格式的数据文件 我需要将此文件加载到 Pig 脚本中 我需要编写一个 LoadFunc UDF 来加载它 说函数是Protobufloader 我的 PIG 脚本是 A LOAD abc proto
  • JAVA 中的 PIG UDF 错误 1070

    我创造了UDF UPPER jar文件输入 home GED385 pigScripts GED385 snshadoope1 pigScripts jar tf home GED385 pigScripts UDF UPPER jar g
  • 如何使用通配符投影别名?

    一旦我做了一个join A by id B by id 我得到一个带有字段的别名A f B f 有没有办法只将其投影到A fields C join A by id B by id D filter C by B n lt 1000 E f
  • 加入 PIG 对阵 COGROUP

    当我在 pig 中使用 COGROUP 而不是 JOIN 时 有什么优势 性能 没有地图减少 吗 http developer yahoo com hadoop tutorial module6 html http developer ya
  • 在 Apache Zeppelin 上运行 Pig 查询

    我正在 Apache Zeppelin 中运行以下 Pig 查询 pig query A load Pig data using PigStorage as ExamName ExamId BITSID StudentName Issue
  • 猪如何过滤不同的对(对)

    我是猪的新手 我有一个 Pig 脚本 它在两个元素之间生成制表符分隔的对 每行一对 例如 John Paul Tom Nik Mark Bill Tom Nik Paul John 我需要过滤掉重复的组合 如果我使用 DISTINCT 我会

随机推荐