1.UNION ONSCHEMA 使用时的注意点
- 类型转换。非相近的类型进行union后,类型就会变为bytearray。若后续对union后的结果进行group by操作时要特别注意,特别该字段是by后的,虽然dump出的数据看上去的一样的,实则内部是不一样的。例如:a:long 和 a:chararray 进行union后,类型变为a:bytearray ,但是long转换后的bytearray和chararray转换后的bytearray是不一样的,故尽早将类型转换为一致的。
2.distinct、频次统计等非精确计算时使用sketches
- 介绍
- distinct &计数(统计UV)
示例:Hyper Log Log Sketch Pig UDFs
示例中0.10.0 引用的jar包使用了Java8中的特性,可惜Hadoop集群中还是Java7,兼容问题未能实际应用。
退而求其次,使用了Theta Sketch,据官方文档介绍在只进行distinct计算时相同精度下,theta 比 HLL 更耗费计算空间和时间。