无法使用 Pyspark 从 EMR 集群连接到雪花
Posted
技术标签:
【中文标题】无法使用 Pyspark 从 EMR 集群连接到雪花【英文标题】:Not able to connect to Snowflake from EMR Cluster using Pyspark 【发布时间】:2020-04-10 04:10:16 【问题描述】:我正在尝试使用 pyspark 从 EMR 集群连接到 Snowflake。
我在 spark-submit 中使用这两个 jar。
雪花-jdbc-3.5.2.jar spark-snowflake_2.11-2.7.0-spark_2.4.jar但由于连接超时错误而失败。
我为 EMR 集群配置了正确的代理。来自同一个 EC2(EMR 主控)
我可以使用snowsql
和 python 连接器连接到 Snowflake。
我不确定为什么 pyspark 会超时。
【问题讨论】:
你能分享你关注的代码 sn-p 吗?有时由于代理问题,它可能无法连接。比如 http_proxy , https_proxy , HTTP_PROXY HTTPS_PROXY no_proxy 设置需要在这种情况下使用 SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake" sfOptions = "sfURL": "XXX", "sfAccount": "XX", "sfUser": "XX", "sfPassword": “xx”、“sfDatabase”:“xx”、“sfSchema”:“xx”、“sfWarehouse”:“xx” 查询 = “从 testdb.test1.t1 中选择 *” df = spark.read.format(SNOWFLAKE_SOURCE_NAME) .options(**sfOptions).option("query", query).load() 我可以使用来自同一个 ec2 实例的 snowsql 和 python 连接器连接到雪花。 你检查过上面提到的 co proxy 吗?剩下的一切看起来都不错,您还需要使用 biz_pstage_work 作为 sprak 连接到 sf 的架构 你能在这里发布错误堆栈跟踪吗?以下是我尝试通过 EMR shell 运行时的命令。(一些旧版本的 jar ) spark-submit --packages net.snowflake:snowflake-jdbc:3.8.0,net.snowflake:spark-snowflake_2.11:2.4.14 -spark_2.4 SparkConnPython.py pyspark --packages net.snowflake:snowflake-jdbc:3.8.0,net.snowflake:spark-snowflake_2.11:2.4.14-spark_2.4 【参考方案1】:您可以使用我们的 SnowCD 工具来检查连接诊断。这与网络问题有关。 https://docs.snowflake.com/en/user-guide/snowcd.html
以下是我尝试通过 EMR shell 运行时的命令。
pyspark --packages net.snowflake:snowflake-jdbc:3.6.27,net.snowflake:spark-snowflake_2.12:2.4.14-spark_2.4
spark-submit --packages net.snowflake:snowflake-jdbc:3.8.0,net.snowflake:spark-snowflake_2.11:2.4.14-spark_2.4 SparkConnPythonWithCert.py
Spark-shell --packages net.snowflake:snowflake-jdbc:3.8.0,net.snowflake:spark-snowflake_2.11:2.4.14-spark_2.4
【讨论】:
以上是关于无法使用 Pyspark 从 EMR 集群连接到雪花的主要内容,如果未能解决你的问题,请参考以下文章
Jupyter + EMR + Spark - 从本地机器上的 Jupyter notebook 连接到 EMR 集群
从 EMR spark 连接到 EMR presto - 连接失败
无法访问 EMR 集群 jupyter notebook 中的 pyspark
为啥我们在启用 Kerberos 的 EMR 集群上使用直线连接到 Hive 时使用 Hive 服务主体?