在 Apache pig 中浮动到 int

Float to int in Apache pig

我有一个正在使用 apache pig 处理的文件。我有一个要转换为浮点数的 chararray 字段,如果该字段的值小于 0,我想让它成为整数 0,如果它大于零,则保持浮点数不变。

例如:如果数字为-1234.56,则将其设为整数0。如果数字为2345.67,则保留为2345.67

我无法使用以下代码,输出为 0.0 而我想要 0,因此我的工作失败了。请帮助.!

((float)field_name > 0 ? (float)field_name:(int)0) AS field_name,

Pig 中的字段(例如 field_name)必须仅包含相同类型的值,例如全部为 float 或全部为 int。当您 运行 上面的代码时,Pig 会自动将整数 0 转换为浮点数 0.0,因为 field_name 必须能够接受像 2345.67 这样的浮点值。您可能收到警告 Encountered Warning IMPLICIT_CAST_TO_FLOAT - 这就是原因。我建议重新编写其余代码,以便 0.0 的输出不会导致作业失败。

@savagedata 是正确的,您不能拥有具有不同类型值的字段。但是如果你想看到 0 而不是 0.0 我建议你根据你的条件将字段转换为字符串。