Database Reference
In-Depth Information
when
'revision'
key = document[
'title'
].to
_
java
_
bytes
ts = ( Time.parse document[
'timestamp'
] ).to
_
i
p = Put.new( key, ts )
p.add(
*
jbytes(
"text"
,
""
, document[
'text'
]))
p.add(
*
jbytes(
"revision"
,
"author"
, document[
'username'
]))
p.add(
*
jbytes(
"revision"
,
"comment"
, document[
'comment'
]))
table.put( p )
count += 1
table.flushCommits()
if
count % 10 == 0
if
count % 500 == 0
puts
"
#{count}
records inserted (
#{document[
'title'
]}
)"
end
end
end
end
table.flushCommits()
exit
{
Der erste bemerkenswerte Unterschied ist die Einführung einiger Varia-
blen:
document
: Enthält die aktuellen Artikel- und Revisionsdaten
buffer
: Enthält Zeichendaten des aktuellen Feldes innerhalb des Do-
kuments (Text, Titel, Autor und so weiter)
count
: Hält nach, wie viele Artikel wir bislang importiert haben
|
Beachten Sie insbesondere unsere Nutzung von
table
.
setAutoFlush
(false)
. Bei HBase werden Daten
automatisch
in regelmäßigen Zeitab-
ständen auf die Platte geschrieben (Autoflushing). Das wird von den meis-
ten Anwendungen bevorzugt. Durch die Deaktivierung von Autoflush in
unserem Skript werden alle
put
-Operationen gepuffert, bis wir
table
.
flushCommits
aufrufen. Auf diese Weise können wir Schreiboperationen
bündeln und dann ausführen, wenn es uns gelegen kommt.
}
Als Nächstes sehen wir uns an, was beim Parsing passiert. Wenn der
Start-Tag
page
ist, setzen wir
document
auf einen leeren Hash zurück.
Wenn es sich um einen anderen Tag handelt, der uns interessiert, setzen
wir den
buffer
zurück, um dessen Text festzuhalten.
~
Wir verarbeiten die Zeichendaten, indem wir sie an den Puffer anhängen.
Bei den meisten schließenden Tags schieben wir den gepufferten Inhalt
einfachindas
document
. Ist der schließende Tag eine
</revision>
,er-
zeugen wir hingegen eine neue
Put
-Instanz, füllen sie mit den Feldern
des
document
s und senden sie an die Tabelle. Danach nutzen wir
flush-
Commits
, wenn wir das eine Zeit lang nicht getan haben, und geben den
Fortschritt über die Standardausgabe aus (
puts
).