0
私は汚いかもしれないと思うデータがあります。具体的には、日付でなければならない1つの列が、正しい日付形式ではない行をいくつか持つことがあります。豚 - 無効な日付形式のすべてのレコードを取得します。
どのようにして、pigを使用して、この列に適切な日付がないファイルからすべての行を取得できますか?
私は汚いかもしれないと思うデータがあります。具体的には、日付でなければならない1つの列が、正しい日付形式ではない行をいくつか持つことがあります。豚 - 無効な日付形式のすべてのレコードを取得します。
どのようにして、pigを使用して、この列に適切な日付がないファイルからすべての行を取得できますか?
私はPythonでUDFを作成しました。
from pig_util import outputSchema
from datetime import datetime
date_format = '%Y-%m-%d %H:%M:%S'
@outputSchema('number:is_date')
def is_date(date):
try:
datetime.strptime(date, date_format)
except ValueError:
return 0
return 1
およびブタで:
REGISTER 'myudf.py' using jython as udf
raw = load '/path/to/file.csv'
USING PigStorage(',')
AS (id:chararray, consumption_date:chararray);
modified = FOREACH raw
GENERATE id, consumption_month, udf.is_date(consumption_month) as is_date;
bad = FILTER modified BY is_date == 0;
dump bad;
あなたはさらに一歩それを取ると(outputSchemaブール) UDFフィルタにあなたのUDFを変えることができます。 https://pig.apache.org/docs/r0.16.0/udf.htmlフィルタだけでリストを取得します。 – patrungel