【原因】
因为spark生成的avro文件,string类型也是使用科学计数法存储的。
1)数字类型在webparser解析时,会进行处理,取消科学计数法;
2)string类型在解析时,没做任何处理,所以显示的科学计数法
即使是double类型,spark底层存储的格式依旧是科学记数法,只是BI对double类型的数据做了处理,统一把科学记数法转换了正常数据。
【解决方案】
不建议直接用cast as string,建议使用spark的format_string()来转为string格式,或者在cast 之前先把数值字段用cast转成decimal/bigint类型, 这样可以避免科学计数法的问题
|