Ist Partition Bereinigung aktiviert für zwischengespeicherte TempTables in Apache Funke? Wenn ja, wie konfiguriere ich es?Spark SQL-Partition Bereinigung für eine zwischengespeicherte Tabelle
Meine Daten sind eine Reihe von Sensormesswerten in verschiedenen Installationen, eine Zeile enthält Installationsname, Tag, Zeitstempel und Wert.
rdd.toDF("installationName", "tag", "timestamp", "value")
.repartition($"installationName", $"tag")
.write.partitionBy("installationName","tag").mode("overwrite").parquet(config.output)
Ich las diese Daten mit dem folgenden Befehl in eine SQL-Tabelle mit Spark-HiveContext:
val parquet = hc.read.parquet("/path_to_table/tablename")
parquet.registerTempTable("tablename")
Nun, wenn ich
Ich habe die Daten in Parkett-Format mit den folgenden Befehlen geschrieben Führen Sie eine SQL-Abfrage für diese Tabelle, es Partition Bereinigung wie erwartet durchführt:
Und die Abfrage dauert ungefähr 8 Sekunden. Aber wenn ich die Tabelle im Speicher zwischengespeichert und dann die gleiche Abfrage ausführen, dauert es immer um 50 Sekunden:
hc.sql("CACHE TABLE tablename")
hc.sql("select * from tablename where installationName = 'XXX' and tag = 'YYY'")
ich derzeit Spark-1.6.1 mit bin.
Hallo, vielen Dank für Ihren Kommentar. In der Tat mache ich eine Neupartitionierung, bevor ich Daten auf Parkett schreibe. Ich habe auch die obige Abfrage mit der Neupartitionierung getestet und es ist mit einer Abfragezeit von 20 s effizienter, aber es ist immer noch langsamer als das Lesen von den Parkettdateien ohne Caching. Mein Zweck ist es, zu vermeiden, auf Parkett-Dateien insgesamt zu schreiben. Könnten Sie vielleicht eine Quelle bereitstellen? Woher wissen Sie, dass das Löschen von Partitionen nach dem Caching nicht unterstützt wird? Wenn Sie hier eine Antwort schreiben würden, könnte ich das akzeptieren. –
Korrektur, Caching im Speicher reduziert die Abfragezeit auf weniger als 1 Sekunde, was natürlich schon akzeptabel ist. Ich frage mich, ob es skaliert: das ist nur ein Teil meiner Dastas, ich habe tatsächlich über 200 mal mehr und wächst ständig, also je mehr Daten ich habe, desto mehr Zeit braucht man durch alle Partitionen zu scannen . –