hive cast函数源码
时间: 2023-11-11 13:01:26 浏览: 190
Hive中的CAST函数是用来将一个数据类型转换为另一个数据类型的函数。其源码如下:
```java
public class UDFToDouble extends UDF {
private DoubleWritable doubleWritable = new DoubleWritable();
public UDFToDouble() {}
public DoubleWritable evaluate(DeferredObject[] arguments) throws HiveException {
if (arguments[0].get() == null) {
return null;
}
try {
if (arguments.length == 1) {
Object o = arguments[0].get();
if (o instanceof Number) {
doubleWritable.set(((Number) o).doubleValue());
} else if (o instanceof String) {
doubleWritable.set(Double.parseDouble(o.toString()));
} else {
throw new HiveException("Cannot convert " + o.getClass().getSimpleName() + " to double");
}
} else if (arguments.length == 2) {
doubleWritable.set(TypeCheckUtils.convertToDouble(arguments[0].get(), arguments[1].get()));
} else {
throw new HiveException("Cast function takes either one or two arguments");
}
return doubleWritable;
} catch (NumberFormatException e) {
return null;
}
}
// Other methods
}
```
这里只提供了UDFToDouble函数的源码,其他类型的CAST函数实现类似。在源码中,首先判断输入参数是否为null,然后根据参数个数进行类型转换,支持数字和字符串类型的转换,如果输入的类型不支持转换,则抛出异常。最终返回转换后的结果。
阅读全文