【发布时间】:2013-07-27 09:35:47
【问题描述】:
1) 如何将下面的 hive 部分转换为 java map reduce?
translate(regexp_replace(colA,"(\\\\=)","\\\\equalto"),"\[\]\(\)\{\}\^\?\+\*\$","____________")
在 regexp_replace 中,我将替换所有 =,在外部翻译中,我将替换所有影响未来 regexp_replace 解析的字符。(如果我不替换这些字符,它们稍后会引发异常)。
2) 我是否必须使用replaceChars(),如果是,那么如何使用?
示例字符串格式为:
tag1=573 tag2=ABC 0nuif6d Saturn 0i899 AA 0 (WORD) LOWER 0 (WORD2) HH 0 BB 0 CC 1 LL 0 D 0 FF 0 AB 0 UPPER 0 (ONCOLD) UPPER 1 PART: Sold \= 88vb JJ number\= 0 String "String_here" ANDND JUJFNG fill EXTRA SUNSET: empty tag3=/Informational tag4=/Value tag5=Value1/Value2 tag6=/AB/Acs Sy/Api Afg Hold Cones/HHH+11: 4.3.2-4.3.4 tag6=11123 tag7=Hello World tag8=a-dfdAds\=\= tag9=Value3 tag.9=Space separated words \= 88 , cold 87 Goal Run\=2, LOT OF SPACE SEPARATED GARBAGE WORDS tag.a=0( tag.b=02
注意:标签不会硬编码为标签。它们可以是任何英文单词,如serial_number 或website.address,如serial_no=hello world website.address=\SO.com=/question,其中serial_no 和website.address 是标签。
【问题讨论】:
-
您能否提供一些示例文本,以帮助我们准确了解您的出发点以及最终产品的目标?
-
好的。示例字符串格式是..(您可以忽略引号)...:'tag1=573 tag2=ABC 0nuif6d Saturn 0i899 AA 0 (WORD) LOWER 0 (WORD2) HH 0 BB 0 CC 1 LL 0 D 0 FF 0 AB 0 UPPER 0 (ONCOLD) UPPER 1 PART: Sold \= 88vb JJ number\= 0 String "String_here" ANDND JUJFNG fill EXTRA SUNSET: empty tag3=/Informational tag4=/Value tag5=Value1/Value2 tag6=/AB/Acs Sy /Api Afg Hold Cones/HHH+11: 4.3.2-4.3.4 tag6=11123 tag7=Hello World tag8=a-dfdAds\=\= tag9=Value3 tag.9=空格分隔的单词\= 88 , cold 87 Goal运行\=2,大量空格分隔的垃圾词 tag.a=0( tag.b=02'
-
我想提取所有标签并将它们用制表符分隔“标签 \t 值”。为此,我将所有 '\=' 替换为 '\equalto' ,然后删除所有导致正则表达式失败的特殊字符,然后用 = 分割,然后获取每个分割的最后一个单词,这些是我的标签,然后对于我用空字符串“”替换每个部分中的最后一个单词的值。
标签: java regex parsing hadoop hive