0

我正在运行 snappydata v0.9 的 docker 映像。从该图像内部,我可以对数据库运行查询。但是,我不能从我机器上的第二台服务器上这样做。

我将 python 文件从 snappydata 复制到安装的 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 跟踪流显示了回溯消息和scala 回溯)。我的假设是 snappydata 集群中的权限设置错误,但是通过日志和配置 grepping 并没有显示任何明显的东西。

我该如何进行?

-------- 编辑 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")
4

2 回答 2

0

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

.config("spark.snappydata.connection", "localhost:1527")

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

于 2017-08-24T02:20:44.097 回答
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")
于 2017-08-24T03:05:04.297 回答