无法连接到python

时间:2017-08-24 01:57:27

标签: python snappydata

我正在为snappydata v0.9运行docker镜像。从该图像内部,我可以对数据库运行查询。但是,我无法通过我机器上的第二台服务器执行此操作。

我将snappydata中的python文件复制到已安装的pyspark(在导入中编辑snappysession到SnappySession)和(根据Unable to connect to snappydata store with spark-shell command的答案),我编写了以下脚本(它有点货物 - 我正在使用docker镜像中的python代码进行复制编程 - 欢迎提出改进建议:

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")

但是,我得到了追溯:

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

我已经通过wireshark验证我的程序正在与docker镜像进行通信(TCP跟随流显示了traceback消息和scala traceback)。我的假设是snappydata集群中的权限设置错误,但是通过日志和配置进行查询并没有显示出任何明显的结果。

我该怎么办?

--------编辑1 ------------

我正在运行的新代码(仍然收到相同的错误),在配置中包含更改建议并确保我获得SnappySession:

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")

2 个答案:

答案 0 :(得分:0)

您可以将配置更改为以下内容 -

.config(“spark.snappydata.connection”,“localhost:1527”)

'snappydata.store.locators'属性在0.9中不再存在。 您可以在此处参考文档 - https://github.com/SnappyDataInc/snappydata/blob/master/docs/deployment.md#connectormode

答案 1 :(得分:0)

此外,您需要创建SnappySession来访问Snappy托管表。 像这样......

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")