You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过私有链接连接AWS Glue与Snowflake时遇PySpark异常

问题:AWS Glue通过PySpark连接Snowflake报错Bad level "<BUILT-IN FUNCTION ALL>"

已配置VPC端点,不使用PySpark时可正常通过私有链接连接Snowflake,但运行指定PySpark代码时触发异常:pyspark.sql.utils.IllegalArgumentException: Bad level "<BUILT-IN FUNCTION ALL>"。已尝试更换查询语句、切换不同版本JAR包(snowflake-jdbc-3.13.22.jar、spark-snowflake_2.12-2.11.0-spark_3.3.jar),问题仍未解决。

代码示例

from cryptography.hazmat.backends import default_backend
from cryptography.hazmat.primitives import serialization
from awsglue.context import GlueContext
from pyspark.context import SparkContext
from pyspark.sql import SQLContext
from awsglue.job import Job
import re

glueContext = GlueContext(SparkContext.getOrCreate())
spark = glueContext.spark_session
job = Job(glueContext)
key_file = """-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
"""
p_key = serialization.load_pem_private_key(
str.encode(key_file),
password="<pass>".encode(),
backend=default_backend()
)

pkb = p_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.NoEncryption()
)

pkb = pkb.decode("UTF-8")
pkb = re.sub("-*(BEGIN|END) PRIVATE KEY-*\n","",pkb).replace("\n","")

sfOptions = {
"sfURL" : "",
"sfUser" : "",
"pem_private_key": pkb,
"sfDatabase" : "",
"sfSchema" : "",
"sfWarehouse" : "",
"continue_on_error": "",
"sfAccount" : "",
"tracing": all,
}

query = "SELECT COUNT(*) FROM my_table"
SNOWFLAKE_SOURCE_NAME = "net.snowflake.spark.snowflake"
df = spark.read.format(SNOWFLAKE_SOURCE_NAME).options(**sfOptions).option("query",  query).load()
df.show()

job.commit()

报错信息

Traceback (most recent call last):
  File "/tmp/test snowflake.py", line 79, in <module>
    df = spark.read.format(SNOWFLAKE_SOURCE_NAME).options(**sfOptions).option("query",  query).load()
  File "/opt/amazon/spark/python/lib/pyspark.zip/pyspark/sql/readwriter.py", line 210, in load
    return self._df(self._jreader.load())
  File "/opt/amazon/spark/python/lib/py4j-0.10.9-src.zip/py4j/java_gateway.py", line 1305, in __call__
    answer, self.gateway_client, self.target_id, self.name)
  File "/opt/amazon/spark/python/lib/pyspark.zip/pyspark/sql/utils.py", line 117, in deco
    raise converted from None
pyspark.sql.utils.IllegalArgumentException: Bad level "<BUILT-IN FUNCTION ALL>"

解决方案

问题根源在于sfOptions字典中的tracing参数值错误:你直接使用了Python内置函数all,而Snowflake Spark Connector要求tracing的有效值是字符串类型的"ALL"、"DEBUG"、"INFO"等。

修改sfOptions中的tracing配置:

sfOptions = {
    # 其他配置项保持不变
    "tracing": "ALL",  # 把all改为字符串"ALL"
}

修改后重新运行代码即可解决该报错。

内容的提问来源于stack exchange,提问作者JorgeH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 00:26:34