【发布时间】:2014-11-20 22:12:54
【问题描述】:
如何处理 Apache PIG 脚本中的不良记录。就我而言,我正在处理一个逗号分隔的文件,通常每行有 14 个字段。
但有时该行包含一个 \n 并且记录被分成两行,我的 PIG 脚本无法将此记录和之后的所有记录插入 HBase。
问题在于 UDF 中映射的长度始终为 3。可能是因为 PIG 脚本中定义的架构。如何确定记录的字段数是否等于架构...
猪
REGISTER 'files.py' using jython as myfuncs
A = LOAD '/etl/incoming/test.txt' USING PigStorage(',') AS (name:chararray, age:int, gpa:float);
B = FOREACH A {
GENERATE
myfuncs.checkFormat(TOTUPLE(*)) as fields;
}
DUMP B;
UDF
import org.apache.pig.data.DataType as DataType
import org.apache.pig.impl.logicalLayer.schema.SchemaUtil as SchemaUtil
@outputSchema("record:map[]")
def checkFormat(record):
print(type(record))
print(record)
record = list(record)
print("length: %d" % len(record)) #always return 3
return record
【问题讨论】: