L'élagage de partition est-il activé pour les TempTables mis en cache dans l'étincelle Apache? Si oui, comment puis-je le configurer? Mes données sont un ensemble de lectures de capteur dans différentes installations, une ligne contient nomInstallation, étiquette, horodatage et valeur.Élagage de partition Spark SQL pour une table mise en cache
J'ai écrit les données au format de parquet en utilisant les commandes suivantes:
rdd.toDF("installationName", "tag", "timestamp", "value")
.repartition($"installationName", $"tag")
.write.partitionBy("installationName","tag").mode("overwrite").parquet(config.output)
J'ai lu ces données en utilisant la commande suivante dans une table SQL en utilisant Spark HiveContext:
val parquet = hc.read.parquet("/path_to_table/tablename")
parquet.registerTempTable("tablename")
Maintenant, si je exécuter une requête SQL sur cette table, il effectue l'élagage de partition comme prévu:
hc.sql("select * from tablename where installationName = 'XXX' and tag = 'YYY'")
Et la requête prend environ 8 secondes. Mais si je en cache la table en mémoire, puis effectuer la même requête, il faut toujours environ 50 secondes:
hc.sql("CACHE TABLE tablename")
hc.sql("select * from tablename where installationName = 'XXX' and tag = 'YYY'")
J'utilise actuellement Spark 1.6.1.
Salut, merci pour votre commentaire. En effet, je fais une opération de répartition avant d'écrire des données sur le parquet. J'ai également testé la requête ci-dessus avec le repartitionnement et il est plus efficace avec un temps de requête de 20 s, mais il est quand même plus lent que la lecture des fichiers parquet sans mise en cache. Mon but est d'éviter d'écrire sur des fichiers parquet. Pourriez-vous fournir une source? Comment savez-vous que l'élagage de partition n'est pas pris en charge après la mise en cache? Si vous écrivez une réponse ici, je pourrais l'accepter. –
Correction, mise en cache en mémoire réduit le temps de requête à moins de 1 seconde, ce qui est bien sûr déjà acceptable. Je me demande, si elle évolue: ce n'est qu'une partie de mon Dasta, j'ai plus de 200 fois plus et continuellement en croissance, donc plus je possède de données, plus je prends le temps de parcourir toutes les partitions, . –