2017-08-24 1 views
0

J'utilise l'image du docker pour snappydata v0.9. De l'intérieur de cette image, je peux exécuter des requêtes sur la base de données. Cependant, je ne peux pas le faire depuis un deuxième serveur sur ma machine.Impossible de se connecter au magasin snappydata en python

J'ai copié les fichiers python de snappydata vers le pyspark installé (modification de snappysession à SnappySession dans les importations) et (basé sur la réponse à Unable to connect to snappydata store with spark-shell command), j'ai écrit le script suivant (c'est un peu de programmation cargaison-culte Je copiais à partir du code python dans l'image docker - suggestions pour l'améliorer sont les bienvenus):

import pyspark 
from pyspark.context import SparkContext 
from pyspark.sql import SparkSession, SQLContext 
from pyspark.sql.snappy import SnappyContext 
from pyspark.storagelevel import StorageLevel 
SparkContext._ensure_initialized() 

spark = SparkSession.builder.appName("test") \ 
          .master("local[*]") \ 
          .config("snappydata.store.locators", "localhost:10034") \ 
          .getOrCreate() 

spark.sql("SELECT col1, min(col2) from TABLE1") 

Cependant, je reçois un retraçage avec:

pyspark.sql.utils.AnalysisException: u'Table or view not found: TABLE1 

J'ai vérifié avec Wireshark que mon le programme est communica ting avec l'image du docker (le flux TCP suivant montre le message de traceback et une trace de scala). Ma supposition est que les permissions dans le cluster snappydata sont mal définies, mais le grepping des logs et de la configuration n'affiche rien d'évident.

Comment procéder?

-------- ------------ 1 Modifier

Le nouveau code que je suis en cours d'exécution (faire toujours la même erreur), incorporant les suggestions pour la changement dans la configuration et de veiller à ce que je reçois un SnappySession est:

from pyspark.sql.snappy import SnappySession 
snappy = SnappySession.builder.appName("test") \ 
           .master("local[*]") \ 
           .config("spark.snappydata.connection", "localhost:1527") \ 
           .getOrCreate() 

snappy.sql("SELECT col1, min(col2) from TABLE1") 

Répondre

0

De plus, vous devez créer un SnappySession pour accéder aux tables gérées Snappy. Quelque chose comme ça ....

spark = SparkSession.builder.appName("test") \ 
         .master("local[*]") \ 
         .config("spark.snappydata.connection", "localhost:1527") \ 
         .getOrCreate() 
snappy = SnappySession(spark) 
snappy.sql("SELECT col1, min(col2) from TABLE1") 
+0

Je reçois TypeError: l'objet 'JavaPackage' n'est pas appelable. Voir ma modification pour le code amélioré. – user78393