数据测试实践:从一个bug开始的大数据引擎兼容性探索

💡 原文中文,约3400字,阅读约需9分钟。
📝

内容提要

通过对京东-我的京东-年度账单bug的排查发现,Hive和Spark引擎之间的语法兼容差异、计算脚本逻辑错误、Hive/Spark与Presto之间的行转列函数及隐式转换也存在差异,Hive的隐式转换更为广泛,而Presto尤其在字符类型的隐式转换中更为严格。

🎯

关键要点

  • 数据测试在大数据时代是组织的重要资产,需关注执行引擎的影响。
  • 京东年度账单帮助用户总结消费情况,挖掘数据价值。
  • 年度账单中的小家电品类报表存在计算结果不一致的缺陷。
  • 缺陷源于Hive和Spark引擎之间的语法兼容差异,导致集合乱序。
  • 使用collect_set()函数导致集合无序,无法正确获取用户最后购买的品类。
  • Hive引擎能保证集合有序,而Spark引擎无法得到正确结果。
  • Hive和Spark的行转列函数存在差异,Hive使用lateral VIEW explode(),而Presto使用CROSS JOIN UNNEST。
  • Hive支持多种隐式转换,而Presto在字符类型转换上更为严格,可能导致类型不一致错误。
➡️

继续阅读