Database Reference
In-Depth Information
Als Nächstes folgt eine while -Schleife, die fortlaufend Token aus dem XML-
Stream einliest, bis keine mehr übrig sind. Innerhalb der while -Schleife ver-
arbeiten wir das aktuelle Token. Was wir genau machen, hängt davon ab, ob
das Token am Anfang eines XML-Tags steht oder an dessen Ende oder ob es
sich um den Text dazwischen handelt.
Die Wikipedia verarbeiten
Nun können wir diese grundlegende Verarbeitung von XML mit unserer Er-
läuterung der HTable -und Put -Schnittstellen kombinieren. Hier das resul-
tierende Skript. Das meiste sollte Ihnen vertraut sein und wir gehen auf die
wenigen neuen Teile genauer ein.
hbase/import_from_wikipedia.rb
require 'time'
import 'org.apache.hadoop.hbase.client.HTable'
import 'org.apache.hadoop.hbase.client.Put'
import 'javax.xml.stream.XMLStreamConstants'
def jbytes( * args )
args.map { |arg| arg.to _ s.to _ java _ bytes }
end
factory = javax.xml.stream.XMLInputFactory.newInstance
reader = factory.createXMLStreamReader(java.lang.System.in)
{
document = nil
buffer = nil
count = 0
table = HTable.new( @hbase.configuration, 'wiki' )
|
table.setAutoFlush( false )
while reader.has _ next
type = reader.next
if type == XMLStreamConstants::START _ ELEMENT
}
case reader.local _ name
when 'page' then document = {}
when /title|timestamp|username|comment|text/ then buffer = []
end
~
elsif type == XMLStreamConstants::CHARACTERS
buffer << reader.text unless buffer.nil?
elsif type == XMLStreamConstants::END _ ELEMENT
case reader.local _ name
when /title|timestamp|username|comment|text/
document[reader.local _ name] = buffer.join
 
Search WWH ::




Custom Search