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