我正在为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")
答案 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")