问题标签 [snowflake-connector]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - Snowflake Pyspark:找不到数据源:雪花
我无法通过 dockerized pyspark 容器连接到雪花。目前,我发现雪花文档和 pyspark 文档都没有帮助。
我正在使用以下配置安装&可以在下面的 Dockerfile 中看到
- 蟒蛇 3.7.12
- pyspark 3.1.1
- Hadoop 3.2
- jre-1.8.0-openjdk
- 雪花-jdbc-3.13.15.jar
- spark-snowflake_2.12-2.10.0-spark_3.1.jar
- 雪花连接器-python 2.7.4
Dockerfile
脚本
snowflake-cloud-data-platform - 雪花外表主键
我有一个不断获取新文件的 s3 文件夹。这些文件也可能基于 url 列有重复项。
s3file1.csv - lastmodified 2022-03-01 at 10 UTC
s3file2.csv 上次修改时间为 2022 年 3 月 1 日 12 UTC
我将我的外部表创建为:
问题是我在基于 url 的表测试中有重复项。所有行的 refreshed_on 日期也相同。如何删除重复项并仅保留具有最新最后修改日期的条目在 url 上唯一?
最终表测试应该只有 s3file2.csv 数据,但它有两个文件数据
java - 将 java 与 Snowflake 连接时的安全本地存储问题
我收到此错误:
net.snowflake.client.core.CredentialManager initSecureStorageManager
信息:安全本地存储服务需要 JNA jar 文件。请按照安全本地存储功能的雪花 JDBC 说明进行操作。回退到正常流程。
net.snowflake.client.core.CredentialManager fillCachedCredential
信息:安全本地存储服务需要 JNA jar 文件。请按照安全本地存储功能的雪花 JDBC 说明进行操作。回退到正常流程。
如何在我的项目中添加这些文件?
这是我的连接属性文件:
我在我的 pom.xml 中包含了 JNA:
airflow - 在 Airflow V2 中使用 fail_on_empty
我正在为我的 ETL 使用 Airflow V2。我在这个 ETL 中使用 SnowflakeSqlSensor。在 Airflow V1 中,我使用的"fail_on_empty=True"
是 SnowflakeSqlSensor 中的参数。当我在 Airflow V2 中使用相同的参数时,我收到一条错误消息"Invalid argument"
。在 Airflow V2 文档中,我们看到这是一个有效的论点。fail_on_empty
在 Airflow V2中是否需要使用任何其他参数?此外,Airflow V2 中此参数的默认值是多少?
python - 使用雪花executemany函数通过python生成器插入行
我有一个雪花表,我正在使用雪花 Python 连接器向其中插入值。因为我有很多数据,所以我使用 python 生成器对象将值插入到我的表中。
但这似乎引发了一个错误,即生成器没有属性 len() 。无论如何我可以使用迭代器将值插入雪花表。
http - Snowflake .NET 连接器在 .Open() 上失败 - 可能是 OCSP/证书问题?
我使用 Snowflake.Data(来自 Snowflake 的 .NET 连接器)在 .NET 5 中构建了一个小型后端应用程序。该应用程序应该从 SNOWFLAKE_SAMPLE_DATA 中的单个模式中提取数据。我将 SnowflakeDbConnection 添加为 Startup.cs 中的 IDbConnection。然后,我有一个服务,它在我的控制器调用它时初始化连接。很简单的设置。
当服务被调用时,它调用 IDbConnection.Open(),设置 ConnectionString,然后...
连接无法打开并超时。我得到错误Snowflake Internal Error: Unable to connect. One or more errors occurred. (Request reach its timeout.) SqlState: 08006, VendorCode: 27001)
所以 IDbConnection 正确映射到雪花,但这就是我从那个错误中所知道的。
根据 Snowflake 文档中的指导,我安装了 SnowCD(他们的诊断工具)并allowlist.json
根据文档运行、下载和验证。基本上,它是连接器需要访问的所有端口的列表,您可以在不运行整个应用程序的情况下运行快速检查 - 它根本没有连接到应用程序代码。无论如何,我得到一个错误:
这是 中的两个OCSP_RESPONDER
条目之一allowlist.json
,但它不是我在浏览器中检查证书时出现的那个,也不是 Snowflake 说它用于我的集群中的部署的那个。正在使用的那个(digicert)不会引发错误。我没有使用任何代理,我没有在防火墙后面工作,等等。只有我在我的笔记本电脑上,在我的本地主机上工作。
所以我使用 telnet 来检查我与 ocsp.pki.goog 的连接,它在端口 80 和 443 上以及当我发出 curl 请求时都很好。
我的问题:
- 当我的终端正常时,为什么这会通过 SnowCD 失败?
- 为什么 allowlist.json 包含 2 个 OCSP 提供程序?需要2个证书吗?为什么?
- .NET 连接器是否也尝试联系 ocsp.pki.goog 并失败,这就是我的连接失败的原因?
似乎超时行为和模糊的错误消息与无法联系证书提供者一致,但我不知道在 nuget 包中可能发生的位置,也不知道为什么需要 2 个 OCSP 响应。
我怎样才能弄清楚这里发生了什么?这是我可以以某种方式解决的问题吗?
我不需要写能力,这就是我使用 .NET 驱动程序而不是 ODBC 的原因。那会是一个更好/更可靠的选择,还是我可能会遇到同样的问题?不过,我宁愿不回到第 1 格 - 那么对于 .NET 连接器的故障排除我没有想到什么?
此外,为了记录,我已经使用了我的连接字符串、我的 https 设置等。行为没有变化,而且似乎这些问题无论如何都会产生不同的行为/错误。