在 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
我建议你根据你的条件将字段转换为字符串。
我有一个正在使用 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
我建议你根据你的条件将字段转换为字符串。