在将“外部”数据引入Hive时,验证它是“干净”的最佳方法是什么?我们不希望任何无效值进入我们的Hive表。
例如,如果源数据中的字段应该包含有效日期但格式不正确(例如:人类用户而不是一个人输入“I”),我们如何检测到这一点? / p>
因此,我们在源数据中使用20I5-06-09
而不是2015-06-09
。
更加棘手的是,如果格式正常但它不是有效日期怎么办?例如,源数据包含2015-02-30
但我们不想让它进入,因为二月不能有30天。
答案 0 :(得分:0)
您可以验证使用Hive的内置函数to_date
,它会在您的第一类错误数据上返回NULL
:
hive> select to_date('2015-02-02'),to_date('20I5-02-02');
2015-02-02 NULL
对于你的第二种不良数据,它会做一些其他有趣的事情......我认为这可能应该被视为一个错误。
hive> select to_date('2015-02-30');
2015-03-02
要解决此问题,您可以
select case when datecol = to_date(datecol) then datecol end
答案 1 :(得分:0)
我们通常在将数据放入Hive表之前清理/验证我们的数据。任何脚本语言都可以快速编写,并且以下任何方法都可以使用: