在转换时间戳时,Python DateTime提供一个DateTime,配置单元/Java提供另一个DateTime

ki0zmccv  于 2022-10-21  发布在  Python
关注(0)|答案(1)|浏览(162)

我正在尝试用Python来搞清楚..它可以在Parquet中作为字符串使用的原生配置单元时间戳格式是什么?
我认为巨蟒给了我一个很好的近距离接触的方式,但是..我注意到我的代码正在生成一个很好的python日期。

def dt2epoch(value):
    d = parse(value)
    d = d.replace(microsecond=0)
    timestamp = d.replace(tzinfo=datetime.timezone.utc).timestamp()
    new_timestamp = round(int(timestamp), -3)

    new_date = datetime.datetime.fromtimestamp(new_timestamp)

    return new_timestamp

但当我把它装入Hive作为table时

CREATE TABLE IF NOT EXISTS hive.DBNAME.TABLE_NAME (
           ->                  COL1           VARCHAR,
           ->                  COL2           VARCHAR,
           ->                  COL3           VARCHAR,
           ->                  COL4           BIGINT,
           ->                  COL5           VARCHAR,
           ->                  COL6           VARCHAR,
           ->                  timestamped    TIMESTAMP)
           ->                WITH (
           ->                  external_location = 's3a://MYBUCKET/dir1/dir2/',
           ->                  format = 'PARQUET');

它出来的时候就像是70年代的

tez616oj

tez616oj1#

我认为它将您的时间戳除以1000,这已经是以秒为单位了。如果您将1663529(秒)转换为时间戳,它将得到20世纪70年代的结果。我不使用配置单元,但也许您可以将输入乘以1000,或者了解它是否接受任何允许您在代码中定义的参数,无论输入是以秒还是毫秒为单位。

相关问题