hadoop - 将配置单元中的数据从一个表插入到另一个表,以便将 mm/dd/yyyy 转换为配置单元时间戳

标签 hadoop hive

我必须将数据填充到一个以时间戳为数据类型的 Hive 表中。 引用这里的其他答案,我理解了创建一个数据类型为字符串的新表然后转换为 yyyy-mm-dd 的方法,因为我的格式是 mm/dd/yyyy.

CREATE TABLE tbl_t (
    t_id    varchar(50), 
    c_date  timestamp,
    name    varchar(25)
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t';

CREATE TABLE tbl_s (
    t_id    varchar(50), 
    c_date  string,
    name    varchar(25)
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t';

我填充了 tbl_s

aa  11/08/1994  hhh
ss  11/09/2011  bbb
mm  09/07/2000  qqq

select t_id
  , from_unixtime(unix_timestamp(c_date ,'MM/dd/yyyy'),'yyyy-MM-dd')
  , name
from tbl_s;

这很好用。现在我需要填充我的原始表。 使用查询:

insert into table tbl_t
select t_id
  , from_unixtime(unix_timestamp(c_date ,'MM/dd/yyyy'),'yyyy-MM-dd')
  , name
from tbl_s;

然后

select * from tbl_t;

返回

aa  NULL    hhh
ss  NULL    bbb
mm  NULL    qqq

为什么时间戳列为空?

最佳答案

在 from_unixtime 函数中不需要额外的参数 'yyyy-MM-dd'。

insert into table tbl_t select t_id,from_unixtime(unix_timestamp(c_date ,'MM/dd/yyyy')),name from tbl_s;

请引用this answerHive Date Functions

关于hadoop - 将配置单元中的数据从一个表插入到另一个表,以便将 mm/dd/yyyy 转换为配置单元时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37477003/

相关文章:

hadoop - 访问 hdfs 文件夹

sql - 如何处理多个重叠的数据集?

java - 从 hadoop 作业写入 Cassandra 时出现 ClassCast 错误

hadoop - 如何在hadoop mapreduce中使用reducer

hadoop - HIVE ODBC - 故障转移

hive - 在pyspark中查询HIVE表

csv - 使用DBeaver,当尝试将数据从CSV导出到我的Hive数据库时,导出卡住吗?

azure - 在处理数据时如何在 Azure HDInsight 中实现数据分布

bash - Hadoop Crontab 放

hadoop - 无法从Spark-shell在Hive中创建新表