apache-spark - 如何使用 Pyspark 加载雪花表,我的 Dataframe 的日期列应反映为 TIMESTAMP_LTZ 格式
问题描述
如果我想将数据帧写入雪花表,考虑到该表在雪花中已经不存在,而且我在数据帧中的时间戳列在存储时应该反映为雪花中的 TIMESTAMP_LTZ 格式。
注意:我不会将时间戳数据格式更改为雪花中的 TIMESTAMP_LTZ,我希望一切都发生在我的 spark 代码本身中。
编辑:
我看到的行为是雪花表的数据类型为 TIMESTAMP_NTZ
解决方案
我看到的行为是雪花表的数据类型为 TIMESTAMP_NTZ
该遵守遵循雪花的Spark 连接器文档中描述的默认行为:
“默认时间戳数据类型映射为 TIMESTAMP_NTZ(无时区),因此您必须显式设置 TIMESTAMP_TYPE_MAPPING 参数才能使用 TIMESTAMP_LTZ。”
Spark 连接器中的TIMESTAMP
数据类型映射将映射到TIMESTAMP_LTZ
底层类型,而不是在执行 CREATE/INSERT 操作之前将TIMESTAMP_NTZ
其明确指定为会话级别参数 ( )。TIMESTAMP_TYPE_MAPPING
会话级参数可以用 Spark 代码表示,不需要永久更改帐户上的任何设置。只需将其作为选项添加到 Spark 代码中与 Snowflake 交互时传递的选项映射中。一个简单的例子如下:
sfOptions += ("TIMESTAMP_TYPE_MAPPING" -> "TIMESTAMP_LTZ")
// Pass this adjusted sfOptions to the .options(…) when writing the DataFrame
推荐阅读
- r - 如何将一些数据附加到现有的 xlsx 工作表 R 中?
- saxon - 如何下载/查找 .NET 的 Saxon 示例/cs
- encoding - 将 Spotify URI 编码为 Spotify 代码
- django - Django模型记录来自书店网站的两个不同应用程序的交易
- python - 导入安装有 pipenv 的第三方模块时,VSCode 中的 Pylint 会通过抛出 no-member 错误而发疯
- laravel - Laravel 路由问题 - 所有子文件夹流量都在路由视图中结束
- javascript - 如何使用 fetch 处理流数据?
- r - 按降序列出模型系数
- python - discord.py:wait_for 超时,虽然它没有
- django - django 自定义管理器 manytomany 字段添加