在Apache pig中浮动到int

时间:2018-03-12 06:59:44

标签: 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,

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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