Hive:数据验证/错误的数据处理?

时间:2015-06-15 20:29:45

标签: validation hadoop hive

在将“外部”数据引入Hive时,验证它是“干净”的最佳方法是什么?我们不希望任何无效值进入我们的Hive表。

例如,如果源数据中的字段应该包含有效日期但格式不正确(例如:人类用户而不是一个人输入“I”),我们如何检测到这一点? / p>

因此,我们在源数据中使用20I5-06-09而不是2015-06-09

更加棘手的是,如果格式正常但它不是有效日期怎么办?例如,源数据包含2015-02-30但我们不想让它进入,因为二月不能有30天。

2 个答案:

答案 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表之前清理/验证我们的数据。任何脚本语言都可以快速编写,并且以下任何方法都可以使用:

  1. 在将数据推送到HDFS之前验证数据。
  2. 如果数据已经在HDFS上,请运行MapReduce作业,过滤掉或修复任何错误的条目。然后加载到Hive。所有这些都可以使用Oozie自动完成。