我有一个案例需要读取格式为
的行的文件Field1,Field2,Field3,Field4,Field5,Field6#Field1,Field2,Field3
虽然实现这一目标的一种方法是使用像KeyValueLineRecordReader
这样的记录阅读器和分隔符#
。但我必须使用,
在我的UDF中分割String.split
上的键和值,我认为这会降低执行速度。
1.是否有任何记录阅读器提供此类格式?
2.如果一个这样的记录作者不存在,那么我有什么方法可以有效地阅读这样的一行呢?
输入数据约为10GB。
答案 0 :(得分:0)
您可以在拆分中使用正则表达式
#responsive-menu-container {
width:100%;
}
答案 1 :(得分:0)
由于您已经使用apache-pig标记了问题,我将提供PIG解决方案。将记录载入1个字段,将#替换为','然后使用STRSPLIT获取各个字段。不需要java或任何UDF。
A = LOAD 'input.txt' AS (line:chararray);
B = FOREACH A GENERATE STRSPLIT(REPLACE(line,'#',','),',',9);
DUMP B;