将“外部”数据引入配置单元时,验证它是否“干净”的最佳方法是什么?我们不希望任何无效值进入我们的配置单元表。
例如,如果源数据中的一个字段应该包含一个有效的日期,但是格式不正确(例如:一个“i”是由人类用户输入的,而不是一个),我们如何检测这个?
所以我们有 20I5-06-09
在源数据中而不是 2015-06-09
.
更棘手的是,如果格式是确定的,但它不是一个有效的日期;例如,源数据包含 2015-02-30
但我们不想让它进来,因为二月不能有30天。
将“外部”数据引入配置单元时,验证它是否“干净”的最佳方法是什么?我们不希望任何无效值进入我们的配置单元表。
例如,如果源数据中的一个字段应该包含一个有效的日期,但是格式不正确(例如:一个“i”是由人类用户输入的,而不是一个),我们如何检测这个?
所以我们有 20I5-06-09
在源数据中而不是 2015-06-09
.
更棘手的是,如果格式是确定的,但它不是一个有效的日期;例如,源数据包含 2015-02-30
但我们不想让它进来,因为二月不能有30天。
2条答案
按热度按时间b5buobof1#
您可以使用配置单元的内置函数进行验证
to_date
它会回来的NULL
关于第一类坏数据:对于第二类坏数据,它还做了一些有趣的事情。。。我想这也许应该作为一个错误提出来。
为了解决这个问题你可以
pvabu6sv2#
我们通常在将数据放入配置单元表之前清理/验证数据。任何脚本语言都可以快速编写,并且以下任何方法都可以工作:
在将数据推送到hdfs之前验证数据。
如果数据已经在hdfs上,请对其运行mapreduce作业以过滤或修复任何错误条目。然后装进Hive。所有这些都可以通过oozie实现自动化。