我首先想要了解非结构化数据。下面提到的是非结构化数据。我通过“Hadoop:Definitive Guide”提到地震示例,这是一个结构化数据,其位置,比例和地理位置都有定义。
任何人都可以帮助我,如果有一个非结构化的数据,如下所示让Mapreduce程序了解哪个Geo,有多少人在谈论Apple,iPhone和Samasung,例如。?
Liyyah_xoxoIG: Liyyah_xoxoeating an apple it's good lol ?
elisaeiyoktaviaItu samsung apa yah ?? :s ngiler dah x_x
congduc3I just moved up to level 4 in #CSRRacing for iPhone! You should check it out for FREE! http://t.co/dyEXQmQbgS@. Í
MDAUD97Hollywood, CaliforniaRT @CNET: Here's how to hack apps into multi-window mode on the Samsung Galaxy Note 2: http://t.co/p2ZsITDhB3
lasirenerRiad???? ????? ???? ?????? ?? ?????? ?? ???? ????? ??? ?????? ???? ...??? ??? ????? ???? ????? ?????? ????? ???????...
http://t.co/PArHmN4mvK
bimandaldoSir Matt Busby WayWonge wae cino mbak, tp cino ireng RT @ardikawp: Kendel men"@bimandaldo: Iphone cino mbak RT @ajengpradiptasr: Iphone kan bisa ngirim foto l
Hatemmuhamed1RT @M_7assib: ??????? ?????? ??? ???? ?? ???? ?? iPhone.
deepakabhishek2indiaSamsung Galaxy S4 already hits 6 million sales http://t.co/KZ3KEUgtYT
tanhuifang1989I've collected 42,140 gold coins! http://t.co/MpmNDY6ebA #iphone, #iphonegames, #gameinsight
ThomasNachlikMünster, Germanyjust finished a Runtastic bike trip of 19.85 km in 43m 58s with #Runtastic PRO iPhone app: http://t.co/L3EK9lznBL
figbishI've collected 46,475 gold coins! http://t.co/pd6wQwsZrF #iphone, #iphonegames, #gameinsight
gutjahrThe WebKo(s)mische Zufälle: #Apple App-Store-Zähler erreicht die 50 Milliarden exakt zur Eröffnungskeynote der großen #Google I/O Konferenz.
a_sifon_421??????
?????????????????????iPhone???????????????????????????????????????
感谢您的快速回复。
答案 0 :(得分:0)
这将是一个常见的映射器程序,我们可以访问上面的文本。您可以使用任何Java String API或正则表达式并以您自己的方式解析文本,并可以提取Geo,Handset类型等信息。然后您可以将它们写入上下文,稍后将其作为reducer的输入。它将是您需要的常规摘要。
您可以在下面的链接中查看有关如何在java中使用正则表达式的一些示例 http://docs.oracle.com/javase/tutorial/essential/regex/intro.html
答案 1 :(得分:0)
恕我直言,你应该考虑的第一件事是你需要的输入格式来处理这种数据。通过查看数据,我觉得它是一个平面的二进制文件(如果我错了请告诉我,我会相应地更新答案)
现在,考虑到它是二进制文件,第一个障碍是编写自定义的InputFormat,因为Hadoop不提供任何可以处理平面二进制文件的InputFormat OOTB。您无法使用可用的InputFormats,因为它们不会是任何分隔符来创建分割(如果是TextInputFormat,则为\ n)。您的InputFormat可能是这样的:
阅读指定的号码。作为byte []的字节,从字节0开始并将此byte []数组转换为字符串,该字符串将作为Text值(InputSplit)与一些键(例如行号)一起提供给映射器。没有。您将用于生成InputSplit的字节应该是可配置的,并且可以在作业设置期间通过作业进行设置。
在此之后,你的逻辑应该是提取你感兴趣的领域并将它们扔给减速器。
YourInputFormat<Length, byte[], LongWritable, Text> -> Mapper<LongWritable, Text, Text, Text> -> Reducer<Text, Text, Text, Text>
HTH
P.S。 :这只是一个蓝图。