2016-05-09 2 views
5

J'essaie d'utiliser Presto sur un compartiment Amazon S3, mais je n'ai pas trouvé beaucoup d'informations connexes sur Internet.Presto sur Amazon S3

J'ai installé Presto sur une micro-instance mais je n'arrive pas à comprendre comment je pourrais me connecter à S3. Il y a un seau et il y a des fichiers dedans. J'ai un serveur métastore de ruche en cours d'exécution et je l'ai configuré dans presto hive.properties. Mais quand j'essaie d'exécuter la commande LOCATION dans la ruche, cela ne fonctionne pas.

IT renvoie une erreur indiquant que le type de schéma de fichier s3 est introuvable.

Et aussi je ne sais pas pourquoi nous devons lancer hadoop mais sans hadoop la ruche ne fonctionne pas. Y a-t-il une explication à cela?

This et this sont les documentations que j'ai suivies lors de la configuration.

Répondre

2

Presto utilise le métastore Hive pour mapper les tables de base de données à leurs fichiers sous-jacents. Ces fichiers peuvent exister sur S3, et peuvent être stockés dans un certain nombre de formats - CSV, ORC, Parquet, Seq etc.

Le métastore de Hive est généralement peuplé par HQL (Hive Query Language) en émettant des instructions DDL comme CREATE EXTERNAL TABLE ... avec une clause LOCATION ... faisant référence aux fichiers sous-jacents qui contiennent les données.

Afin d'obtenir Presto pour se connecter à une Ruche Metastore vous devrez modifier le fichier hive.properties (DME met cela en /etc/presto/conf.dist/catalog/) et définissez le paramètre hive.metastore.uri au service de l'épargne d'un service approprié Metastore Ruche. Les instances du cluster Amazon EMR le configurent automatiquement pour vous si vous sélectionnez Hive et Presto. C'est donc un bon point de départ.

Si vous voulez tester cela sur une instance ec2 autonome, je vous suggère de vous concentrer d'abord sur un service de ruche fonctionnel fonctionnant avec l'infrastructure Hadoop. Vous devriez être capable de définir des tables qui résident localement sur le système de fichiers hdfs. Presto complète la ruche, mais nécessite une configuration de ruche fonctionnelle, les instructions ddl natives de presto ne sont pas aussi complètes que celles de ruche, donc vous ferez directement la plupart des créations de tables depuis ruche.

Alternativement, vous pouvez définir des connecteurs Presto pour une base de données mysql ou postgresql, mais c'est juste un passage jdbc à travers je ne pense pas que vous gagnerez beaucoup.

+0

Merci pour votre réponse. Je veux essayer presto avec absolument aucun coût associé. S'il vous plaît vérifier les modifications, j'ai eu plus de doutes après avoir parcouru le matériel pertinent que vous venez de mentionner. – Codex

+0

Avec Amazon EMR, j'encaissais des coûts, donc j'essaie d'éviter cela. Y a-t-il un moyen de contourner cela? – Codex

+1

J'ai écrit le [post] suivant (http://blog.danielcorin.com/code/2016/04/11/querying-s3-with-presto.html) l'année dernière sur le sujet. Je n'ai pas essayé la configuration depuis mais il y a une chance que cela puisse aider. L'idée générale est d'utiliser un conteneur Docker en tant que métastore Hive. Vous n'avez donc pas besoin d'un service géré comme EMR uniquement pour le routage de vos requêtes Presto. –