我正在运行 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")