Hive 复制配置单元表时丢失时间戳信息

Hive 复制配置单元表时丢失时间戳信息,hive,timestamp,Hive,Timestamp,我使用一个非常大的数据源,并试图创建一个小的子集表来测试我的代码,以加快开发速度。我正在处理包含高频数据(1-100Hz)的数据,因此时间戳精度降低到微秒对我的工作很重要。但是,在创建查询它的新表之后,年、月和日是时间戳中唯一被复制的位,小时、分钟、秒和微秒值都是0。我的第一次尝试很简单,例如: create table database.table_name as select * from source_database.source_table; 我还尝试使用模式创建表,将感兴趣的列显式

我使用一个非常大的数据源,并试图创建一个小的子集表来测试我的代码,以加快开发速度。我正在处理包含高频数据(1-100Hz)的数据,因此时间戳精度降低到微秒对我的工作很重要。但是,在创建查询它的新表之后,年、月和日是时间戳中唯一被复制的位,小时、分钟、秒和微秒值都是0。我的第一次尝试很简单,例如:

create table database.table_name as select * from source_database.source_table;
我还尝试使用模式创建表,将感兴趣的列显式声明为时间戳类型,然后将数据插入其中,但我得到了相同的结果。例如:

create table database.table_name (val1 int, val2 string, val3 timestamp); 

insert into table database.table_name select val1, val2, timestamp(val3) from source_database.source_table;

我还尝试将时间戳转换为字符串,但问题仍然存在。我觉得我缺少一些简单的东西,但在蜂巢中创建表格时,我相对缺乏经验,所以我不确定到底发生了什么。任何帮助都将不胜感激。

原始字符串是什么样子的?当我查询源表并转换为字符串时,它是正常的时间戳格式。但是,当我在插入子集表并查询它时将其转换为字符串时,它是相同的,只是没有小时、分钟、秒和微秒精度(全部为零)。为什么要将时间戳转换为时间戳??时间戳(val3)请提供一些例子这是出于绝望。主要的问题是,我不知道为什么仅仅使用
create table database.table\u name作为select*from src\u db.src\u tbl会失去精度。我想看看我是否能解决它的根本原因,或者至少找到一个解决办法。