AWS - Redshift - 外部表读取 Parquet 文件中 timestamp 类型的数据
问题:
通过 Redshift Spectrum 功能可以读取 S3 中的文件,当读取 Parquet 文件时,如果列格式设置为 timestamp, 通过 psql 客户端读取会出现以下错误:
testdb=# select * from myspectrum_schema_0219.test_ns;
ERROR: Assert
DETAIL:-----------------------------------------------error: Assertcode: 1000context: status == 0 - timestamp: '-3784992261051417264'query: 15121995location: cg_util.cpp:705process: padbmaster [pid=1073963104]-----------------------------------------------
通过 Query Editor V2 读取,则显示错误的时间格式:

以下是 CSV 文件,以及通过 python 读取 Parquet 文件的内容:
CSV:
$ more data3.csv
saletime
2024-01-01 01:01:01.000000
2025-01-01 01:01:01.000000
2025-01-02 02:01:01.000000
2025-01-03 03:01:01.000000
2025-01-04 04:01:01.000000
2025-01-04 05:01:01.000000
Parquet:
>>> import pandas as pd
>>> import pyarrow.parquet as pq
>>> parquet_file = 'data3_ns.parquet'
>>> df_read = pd.read_parquet(parquet_file)
>>> print(df_read)saletime
0 2024-01-01 01:01:01
1 2025-01-01 01:01:01
2 2025-01-02 02:01:01
3 2025-01-03 03:01:01
4 2025-01-04 04:01:01
5 2025-01-04 05:01:01
原因:
Redshift 中的时间类型支持到 us,也就是 微妙,而 Parquet 文件 timestamp 格式支持的类型为 ns,所以对于时间格式是无法读取,或读取错误。
解决:
在 Parquet 文件设置时间类型时,对值做设置,datetime64[us],以匹配 Redshift 的时间精度。
以下为CSV生成 Parquet 的代码:
import pandas as pd
import pyarrow.parquet as pq# 读取 CSV 文件
csv_file = 'data3.csv'
df = pd.read_csv(csv_file)# 假设 CSV 文件中有一个时间列 'timestamp',将其转换为微秒精度
df['saletime'] = pd.to_datetime(df['saletime']).astype('datetime64[us]')# 将 DataFrame 保存为 Parquet 文件
parquet_file = 'data3_us.parquet'
df.to_parquet(parquet_file, engine='pyarrow')# 读取 Parquet 文件以验证
df_read = pd.read_parquet(parquet_file)
print(df_read)saletime
0 2024-01-01 01:01:01
1 2025-01-01 01:01:01
2 2025-01-02 02:01:01
3 2025-01-03 03:01:01
4 2025-01-04 04:01:01
5 2025-01-04 05:01:01
之后创建外部表进行查询,就可以成功匹配到正确的格式。
testdb=# CREATE EXTERNAL TABLE myspectrum_schema_0219.test_us(saletime timestamp)
testdb-# STORED AS parquet
testdb-# LOCATION 's3://XXX/redshiftspectrum/t_0220_p/t_0220_p_us/';
CREATE EXTERNAL TABLEtestdb=# select * from myspectrum_schema_0219.test_us;saletime
---------------------2024-01-01 01:01:012025-01-01 01:01:012025-01-02 02:01:012025-01-03 03:01:012025-01-04 04:01:012025-01-04 05:01:01
(6 rows)
相关文章:
AWS - Redshift - 外部表读取 Parquet 文件中 timestamp 类型的数据
问题: 通过 Redshift Spectrum 功能可以读取 S3 中的文件,当读取 Parquet 文件时,如果列格式设置为 timestamp, 通过 psql 客户端读取会出现以下错误: testdb# select * from myspectrum_schema_0219.test_ns; ERROR…...
Ubuntu20.04之VNC的安装使用与常见问题
Ubuntu20.04之VNC的安装与使用 安装图形桌面选择安装gnome桌面选择安装xface桌面 VNC-Server安装配置开机自启 VNC Clientroot用户无法登入问题临时方案永久方案 安装图形桌面 Ubuntu20.04主流的图形桌面有gnome和xface两种,两种桌面的安装方式我都会写,…...
vue3学习3-route
创建路由器: 应用路由器: 路由展示区RouterView 和 路由跳转RouterLink: 路由组件(在路由配置文件中配置的)一般放到pages/views文件夹下 路由组件切换的时候执行的是 挂载/卸载操作 onMounted / onUnmouted 路由器两…...
C++:dfs,bfs各两则
1.木棒 167. 木棒 - AcWing题库 乔治拿来一组等长的木棒,将它们随机地砍断,使得每一节木棍的长度都不超过 5050 个长度单位。 然后他又想把这些木棍恢复到为裁截前的状态,但忘记了初始时有多少木棒以及木棒的初始长度。 请你设计一个程序…...
RK Android11 WiFi模组 AIC8800 驱动移植流程
RK Android WiFi模组 AIC8800 驱动移植流程 作者:Witheart更新时间:20250220 概要:本文介绍了基于 AIC8800D40 芯片的 WiFi6 模组 BL-M8800DS2-40 在 RK3568 平台上的驱动移植流程。主要涉及环境搭建、驱动代码分析、设备树修改、驱动编译配…...
深度学习-6.用于计算机视觉的深度学习
Deep Learning - Lecture 6 Deep Learning for Computer Vision 简介深度学习在计算机视觉领域的发展时间线 语义分割语义分割系统的类型上采样层语义分割的 SegNet 架构软件中的SegNet 架构数据标注 目标检测与识别目标检测与识别问题两阶段和一阶段目标检测与识别两阶段检测器…...
免费送源码:ava+springboot+MySQL 基于springboot 宠物医院管理系统的设计与实现 计算机毕业设计原创定制
摘 要 在当今社会,宠物已经成为人们生活中不可或缺的一部分,因此宠物健康和医疗问题也备受关注。为了更好地管理宠物医院的日常运营和提供优质的医疗服务,本研究设计并实现了一套基于Spring Boot框架的宠物医院管理系统。这一系统集成了多项功…...
【电机控制器】ESP32-C3语言模型——DeepSeek
【电机控制器】ESP32-C3语言模型——DeepSeek 文章目录 [TOC](文章目录) 前言一、简介二、代码三、实验结果四、参考资料总结 前言 使用工具: 提示:以下是本篇文章正文内容,下面案例可供参考 一、简介 二、代码 #include <Arduino.h&g…...
小型字符级语言模型的改进方向和策略
小型字符级语言模型的改进方向和策略 一、回顾小型字符级语言模型的处理流程 前文我们已经从零开始构建了一个小型字符级语言模型,那么如何改进和完善我们的模型呢?有哪些改进的方向?我们先回顾一下模型的流程: 图1 小型字符级语言模型的处理流程 (1)核心模块交互过程:…...
力扣-贪心-56 合并区间
思路 先按照左区间进行排序,然后初始化left和right,重叠时,更新right,不重叠时,收集区间 代码 class Solution { public:static bool cmp(vector<int> a, vector<int> b){if(a[0] b[0]){return a[1] &…...
vue 3D 翻页效果
<template><view class"swipe-container" touchstart"onTouchStart" touchmove"onTouchMove" touchend"onTouchEnd"><view class"page">初始页</view></view> </template><script&g…...
【系列专栏】银行信息系统研发外包风险管控-08
银行信息系统研发外包风险管控 在金融科技日新月异的当下,银行业务对信息系统的依赖程度与日俱增。为了充分利用外部专业资源,提升研发效率并合理控制成本,许多银行选择将信息系统研发外包。然而,这一策略在带来诸多便利的同时&a…...
[ComfyUI] 【AI】如何获得一张人物图片的优质描述
在使用ComfyUI时,获取一张人物图片的优质英文描述非常重要,尤其是在涉及图像生成、自动化标签和多模态AI任务时。以下是一个简单的流程,可以帮助你快速从一张人物图片中提取出精确且高质量的英文描述。 1. 打开 Hugging Face 网站 首先,您需要访问 Hugging Face 提供的 J…...
深度学习基础--ResNet网络的讲解,ResNet50的复现(pytorch)以及用复现的ResNet50做鸟类图像分类
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 前言 如果说最经典的神经网络,ResNet肯定是一个,这篇文章是本人学习ResNet的学习笔记,并且用pytorch复现了ResNet50&…...
stack,queue,priority_queue学习知识点
容器适配器 在c常用的容器中,有的是以容器迭代器为核心,而有的则以容器适配器为核心。较为常用的就包括queue和stack。接下来我将简单的以queue和stack的模拟实现介绍其特点。 在以下的模拟实现中,class Con就是我们的容器适配器࿰…...
css特异性,继承性
html <div class"introduce"><div class"title">介绍</div><div class"card-box"><div class"card"><div class"title">管理</div></div></div> </div> scs…...
力扣hot100刷题——11~20
文章目录 11.滑动窗口最大值题目描述思路:滑动窗口单调队列code 12.最小覆盖子串题目描述思路:双指针/滑动窗口哈希code Ⅰcode Ⅱ 13.最大子数组和题目描述思路:dp/贪心code 14.合并区间题目描述思路:贪心code 15.轮转数组题目描…...
R语言Stan贝叶斯空间条件自回归CAR模型分析死亡率多维度数据可视化
全文链接:https://tecdat.cn/?p40424 在空间数据分析领域,准确的模型和有效的工具对于研究人员至关重要。本文为区域数据的贝叶斯模型分析提供了一套完整的工作流程,基于Stan这一先进的贝叶斯建模平台构建,帮助客户为空间分析带来…...
速通HTML
目录 HTML基础 1.快捷键 2.标签 HTML进阶 1.列表 a.无序列表 b.有序列表 c.定义列表 2.表格 a.内容 b.合并单元格 3.表单 a.input标签 b.单选框 c.上传文件 4.下拉菜单 5.文本域标签 6.label标签 7.按钮标签 8.无语义的布局标签div与span 9.字符实体 HTML…...
安装 Milvus Java SDK
本主题介绍如何为 Milvus 安装 Milvus Java SDK。 当前版本的 Milvus 支持 Python、Node.js、GO 和 Java SDK。 要求 Java(8 或更高版本)Apache Maven 或 Gradle/Grails 安装 Milvus Java SDK 运行以下命令安装 Milvus Java SDK。 Apache Maven &…...
OpenIPC:3大技术突破实现网络摄像头固件的完全掌控
OpenIPC:3大技术突破实现网络摄像头固件的完全掌控 【免费下载链接】firmware Alternative IP Camera firmware from an open community 项目地址: https://gitcode.com/gh_mirrors/fir/firmware 还在为网络摄像头的封闭固件而烦恼吗?想要完全掌控…...
如何快速掌握Mermaid流程图绘制:5步轻松创建专业图表
如何快速掌握Mermaid流程图绘制:5步轻松创建专业图表 【免费下载链接】mermaid-live-editor Edit, preview and share mermaid charts/diagrams. New implementation of the live editor. 项目地址: https://gitcode.com/GitHub_Trending/me/mermaid-live-editor …...
WeKnora入门教程:零基础搭建个人知识管理系统
WeKnora入门教程:零基础搭建个人知识管理系统 1. 引言 你是不是经常遇到这样的情况:电脑里存了几百个文档,想找某个资料时却像大海捞针?或者团队的知识分散在各个成员的电脑里,新人来了根本不知道从哪里学起…...
lora-scripts企业级应用:客服话术、营销文案定制训练实战解析
LoRA-Scripts企业级应用:客服话术、营销文案定制训练实战解析 1. 为什么企业需要定制化文本生成 在当今商业环境中,个性化沟通已成为品牌差异化的关键。传统客服话术和营销文案往往面临三大痛点: 模板化严重:千篇一律的回复难以…...
Nano-Banana镜像免配置部署:Docker+Streamlit极简交互环境搭建
Nano-Banana镜像免配置部署:DockerStreamlit极简交互环境搭建 1. 引言:让结构拆解变得简单高效 如果你是一名设计师、工程师或创意工作者,一定遇到过这样的需求:需要将复杂的产品拆解成清晰的部件展示图。传统方法需要专业的3D建…...
Arduino TFT_eSPI库进阶玩法:用Sprite(精灵图)制作流畅动画和动态仪表盘
Arduino TFT_eSPI库进阶玩法:用Sprite(精灵图)制作流畅动画和动态仪表盘 当你在Arduino项目中使用TFT屏幕时,是否遇到过屏幕闪烁、刷新缓慢的问题?特别是在制作动态界面或动画效果时,直接操作屏幕往往会导致…...
Magnet2Torrent终极指南:如何将磁力链接快速转换为种子文件
Magnet2Torrent终极指南:如何将磁力链接快速转换为种子文件 【免费下载链接】Magnet2Torrent This will convert a magnet link into a .torrent file 项目地址: https://gitcode.com/gh_mirrors/ma/Magnet2Torrent 在P2P资源共享和下载管理中,磁…...
CSP策略对vue3项目的一些影响
1、避免使用 eval() 或 new Function()注:检查第三方库是否兼容 CSP 策略,有些老库可能偷偷用 eval(),要测试一下2、尽量避免内联样式 <!-- ✅ 编译后可能变成 JS 赋值,所以能通过--> <div :style"{ color: red}&qu…...
Flux Sea Studio 性能基准测试:不同GPU型号下的生成速度对比
Flux Sea Studio 性能基准测试:不同GPU型号下的生成速度对比 最近在折腾AI生图,特别是用Flux Sea Studio,发现一个挺实际的问题:选什么GPU?是咬牙上顶配的RTX 4090,还是性价比更高的RTX 3080?它…...
SerialPlot终极指南:3分钟快速上手串口数据可视化工具
SerialPlot终极指南:3分钟快速上手串口数据可视化工具 【免费下载链接】serialplot Small and simple software for plotting data from serial port in realtime. 项目地址: https://gitcode.com/gh_mirrors/se/serialplot 你是否曾面对串口输出的海量数字数…...
