Hive erzwingt Schema während der Lesezeit?

8

Was ist der Unterschied und die Bedeutung dieser beiden Aussagen, auf die ich in einem Vortrag stieß:

%Vor%

und

%Vor%     
London guy 01.08.2012, 17:13
quelle

1 Antwort

15

Sie erwähnen einen der Gründe, warum Hadoop und andere NoSQL-Strategien so erfolgreich waren, also bin ich mir nicht sicher, ob Sie eine Dissertation erwarten oder nicht, aber hier ist es! Die zusätzliche Flexibilität und Agilität in der Datenanalyse hat wahrscheinlich zur Explosion der "Data Science" beigetragen, nur weil sie die Datenanalyse im großen Maßstab allgemein vereinfacht.

Eine traditionelle relationale Datenbank speichert die Daten im Hinblick auf das Schema. Es weiß, dass die zweite Spalte eine ganze Zahl ist, weiß, dass es 40 Spalten usw. hat. Daher müssen Sie Ihr Schema im Voraus angeben und gut planen. Dies ist "Schema beim Schreiben" - das heißt, das Schema wird angewendet, wenn die Daten in den Datenspeicher geschrieben werden.

Hive (in einigen Fällen), Hadoop und viele andere NoSQL-Systeme befassen sich im Allgemeinen mit "Schema beim Lesen" - das Schema wird angewendet, während die Daten aus dem Datenspeicher ausgelesen werden. Betrachten Sie die folgende Zeile von Rohtext:

%Vor%

Es gibt mehrere Möglichkeiten, dies zu interpretieren. ~ könnte das Trennzeichen sein oder möglicherweise : könnte das Trennzeichen sein. Wer weiß? Mit dem Schema beim Lesen spielt es keine Rolle. Sie entscheiden, was das Schema ist, wenn Sie die Daten analysieren, nicht wenn Sie die Daten schreiben. Dieses Beispiel ist ein bisschen lächerlich, da Sie wahrscheinlich nie auf diesen Fall stoßen werden, aber es bringt den Punkt hoffentlich durcheinander.

Mit dem Schema beim Lesen laden Sie einfach Ihre Daten in den Datenspeicher und überlegen, wie Sie später analysieren und interpretieren. Im Kern dieser Erklärung bedeutet schema on read , dass Sie zuerst Ihre Daten schreiben und herausfinden, was es später ist. Schema on write bedeutet, herauszufinden, was Ihre Daten zuerst sind, und schreiben Sie danach.

Hier gibt es einen Kompromiss. Einige davon sind subjektiv und meine eigene Meinung.

Vorteile von Schema beim Schreiben :

  • Bessere Sicherheit und Datenbereinigung für die ruhenden Daten
  • Typischerweise effizienter (Speichergröße und rechenintensiv), da die Daten bereits analysiert wurden

Nachteile von Schema beim Schreiben :

  • Sie müssen im Voraus planen, was Ihr Schema ist, bevor Sie die Daten speichern (d. h. Sie müssen ETL machen)
  • Normalerweise wirfst du die Originaldaten weg, was schlimm sein könnte, wenn du einen Fehler in deinem Ingest-Prozess hast
  • Es ist schwieriger, verschiedene Ansichten derselben Daten zu haben

Vorteile von Schema auf lesen :

  • Flexibilität bei der Definition, wie Ihre Daten beim Laden interpretiert werden
    • Dies gibt Ihnen die Möglichkeit, Ihr "Schema" mit der Zeit weiterzuentwickeln
    • Dies ermöglicht Ihnen verschiedene Versionen Ihres "Schemas"
    • Dies ermöglicht die Änderung des originalen Quelldatenformats ohne Konsolidierung auf ein Datenformat
  • Sie behalten Ihre ursprünglichen Daten
  • Sie können Ihre Daten laden, bevor Sie wissen, was damit zu tun ist (damit Sie sie nicht auf den Boden fallen lassen)
  • Bietet Ihnen die Flexibilität, unstrukturierte, unsaubere und / oder unorganisierte Daten speichern zu können

Nachteile von Schema beim Lesen :

  • Im Allgemeinen ist es weniger effizient, weil Sie die Daten jedes Mal analysieren und neu interpretieren müssen (dies kann bei Formaten wie XML teuer sein)
  • Die Daten sind nicht selbstdokumentierend (d. h. Sie können nicht auf ein Schema schauen, um herauszufinden, was die Daten sind)
  • Lieber fehleranfällig und Ihre Analysen müssen schmutzige Daten berücksichtigen
Donald Miner 01.08.2012, 17:32
quelle

Tags und Links