2016-06-29 30 views
1

Stellen Sie sich vor, Sie lesen Millionen von Datenzeilen aus einer CSV-Datei. Jede Zeile zeigt den Sensornamen, den aktuellen Sensorwert und den Zeitstempel, wenn dieser Wert beobachtet wurde.So speichern Sie Sensordaten in Apache Hadoop HDFS, Hive, HBase oder andere

key, value, timestamp 
temp_x, 8°C, 10:52am 
temp_x, 25°C, 11:02am 
temp_x, 30°C, 11:12am 

Dies bezieht dich auf ein Signal wie folgen aus:

real world signal observations

So frage ich mich, was ist der beste und effizienteste Weg, dass in Apache Hadoop HDFS zu speichern. Die erste Idee verwendet BigTable aka HBase. Hier ist der Signalname der Zeilenschlüssel, während der Wert eine Spaltengruppe ist, die die Werte im Laufe der Zeit speichert. Man könnte diesem Zeilenschlüssel weitere Spaltengruppen (wie zum Beispiel Statistiken) hinzufügen.

stored in HBase

Eine weitere Idee ist unter Verwendung eines tabellarischen (SQL oder dergleichen) Struktur. Aber dann replizieren Sie den Schlüssel in jeder Zeile. Und Sie müssen Statistiken nach Bedarf berechnen und separat speichern (hier in eine zweite Tabelle).

SQL like storage

Ich frage mich, ob es eine bessere Idee. Einmal gespeichert, möchte ich diese Daten in Python/PySpark lesen und Datenanalyse und maschinelles Lernen durchführen. Daher sollten die Daten unter Verwendung eines Schemas (Spark RDD) leicht zugänglich sein.

Antwort

1

würde ich in Betracht ziehen zu verwenden.

  • Laden von Daten aus CSV-Datei mit databricks csv
  • die Daten Reinigung
  • Datei schreiben qarquet

  • Laden von Daten aus Parkett Datei

  • analysieren (Raum und Zeit zu sparen)
  • Vielleicht als Zwischenergebnis speichern
+0

Danke. Das ist unser aktueller Ansatz. – Matthias

+0

Haben Sie versucht, im Avro-Format zu speichern, um den Leistungsunterschied zu sehen? –

+0

Ja, wir haben das in verschiedenen anderen Projekten ausprobiert und fühlen, dass Parquet in Sachen Leistung besser ist. – Matthias