【问题标题】:How to convert bigint to datetime in hive?如何在 hive 中将 bigint 转换为 datetime?
【发布时间】:2017-12-14 07:31:25
【问题描述】:

我使用 sqoop import 命令将数据从 teradata sqoop 到 Hive。

对于 teradata 中的一张表,我有一个日期字段。在 sqooping 之后,我的日期字段显示为具有 bigint 数据类型的时间戳。

但我需要将日期字段作为配置单元表中的日期数据类型。谁能建议我实现这一目标?

【问题讨论】:

  • timestamp with bigint datatype 是什么样的?请在您的帖子中添加一些示例。
  • 我去年遇到了这个问题,我发现的唯一方法是将字段转换为 varchar 作为 sqoop 导出的一部分。
  • 我的hue中的日期字段是一个13位的时间戳,看起来像:1450051200000,它是bigint类型的。但我希望在 sqooping 后使用日期类型而不是色调中的 bigint。
  • 我尝试使用 to_char 函数将 bigint 转换为字符串字段。但是,有什么方法可以直接从 bigint 转换为 datetime 类型,而不是 string
  • 为什么不在sqoop查询中使用Teradata函数cast(column_name as date)函数

标签: hadoop hive teradata sqoop


【解决方案1】:
select to_date(from_unixtime(your timestamp));

example:

select to_date(from_unixtime(1490985000));
output:2017-04-01

我希望它会起作用。如果我错了,请告诉我。

【讨论】:

  • 您提到的格式按预期工作。但是,这只是一种阅读权利。我期待的是,在 sqoop import 之后,hive 中的日期字段应该是 datetime 类型。
【解决方案2】:

我遇到过这个问题。我的方法是首先创建 Hive 表。您应该在 Teradata 数据类型和您的 Hive 版本数据类型之间建立等价关系。之后,您可以使用 Sqoop 参数 --hive-table <table-name> 插入到该表中。

【讨论】:

  • 您能否发布在 Teradata 数据类型和我的 Hive 版本数据类型之间等效的 sqoop 导入命令?
  • @Stack777 这只是 Hive 中的 CREATE TABLE 语句,而不是 sqoop 中的额外参数。这样您就可以根据需要定义表架构。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-05-26
相关资源
最近更新 更多