2016-04-14 7 views
2

Ich habe paar Funken Jobs, die Parkett-Dateien in AWS S3 produzieren. Hin und wieder muss ich einige Ad-hoc-Abfragen auf einen angegebenen Datumsbereich dieser Daten ausführen. Ich möchte das nicht mit Funken tun, weil ich möchte, dass unser QA-Team, das kein Wissen über Funken hat, dies tun kann. Was ich tun möchte, ist, einen AWS EMR-Cluster hochzufahren und die Parkettdateien in HDFS zu laden und meine Abfragen dagegen auszuführen. Ich habe herausgefunden, wie man Tabellen mit einem Stock erstellt und auf einen s3-Pfad zeigt. Aber das begrenzt meine Daten auf nur einen Tag. weil jeden Tag Datum mehrere Dateien unter einem Pfad wieLaden oder Zeigen auf mehrere Parkett Wege für die Datenanalyse mit Bienenstock oder prestodb

s3://mybucket/table/date/(parquet files 1 ... n).

So Problem hat man Figur, wie mehrere Tage von Daten in Struktur zu laden.

dh

s3://mybucket/table_a/day_1/(parquet files 1 ... n). s3://mybucket/table_a/day_2/(parquet files 1 ... n). s3://mybucket/table_a/day_3/(parquet files 1 ... n). ... s3://mybucket/table_b/day_1/(parquet files 1 ... n). s3://mybucket/table_b/day_2/(parquet files 1 ... n). s3://mybucket/table_b/day_3/(parquet files 1 ... n).

Ich weiß hive Partitionen unterstützen kann, aber meine s3-Dateien sind nicht Setup auf diese Weise.

Ich habe auch in prestodb untersucht, die das Lieblingswerkzeug für diese Art der Datenanalyse zu sein scheint. Die Tatsache, dass es ansi SQL unterstützt, macht es zu einem großartigen Werkzeug für Leute, die SQL-Kenntnisse haben, aber wenig über Hadoop oder Spark wissen. Ich habe dies auf meinem Cluster installiert und es funktioniert großartig. Aber es sieht so aus, als ob Sie nicht wirklich Daten in Ihre Tabellen laden können und Sie müssen sich auf Hive verlassen, um diesen Teil zu machen. Ist das der richtige Weg, um prestodb zu verwenden? Ich sah eine netflix presentation über ihre Verwendung von prestodb und mit s3 anstelle von HDFS. Wenn das funktioniert, ist es toll, aber ich frage mich, wie die Daten in den Speicher verschoben werden. Ab wann werden die Parkettdateien von s3 in den Cluster verschoben. Muss ich einen Cluster haben, der die gesamten Daten in den Speicher laden kann? Wie ist das generell aufgebaut?

Antwort

0

Anstatt zu versuchen, mehrere Dateien zu laden, können Sie stattdessen die API verwenden, um die gewünschten Tage in ein einzelnes Objekt zu verketten, das Sie dann mit den bereits erwähnten Mitteln laden können.

AWS hat einen Blogeintrag hervorheben, wie genau dieses, was zu tun rein über die API (ohne + Wieder Hochladen der das Herunterladen von Daten): https://ruby.awsblog.com/post/Tx2JE2CXGQGQ6A4/Efficient-Amazon-S3-Object-Concatenation-Using-the-AWS-SDK-for-Ruby

2

Sie können Hive installieren und Hive Tabellen mit Ihnen Daten in S3 erstellen beschrieben im Blogpost hier: https://blog.mustardgrain.com/2010/09/30/using-hive-with-existing-files-on-s3/

Dann installieren Sie Presto auf AWS, konfigurieren Sie Presto, um den Hive-Katalog, den Sie zuvor installiert haben, zu verbinden. Dann können Sie Ihre Daten auf S3 mit Presto mit SQL abfragen.

+0

Das Schlüsselverständnis hier (für mich) ist, dass Presto "CREATE EXTERNAL TABLE" noch nicht unterstützt. Sie müssen es also mit Hive erstellen und dann können Sie es mit Presto abfragen. –

Verwandte Themen