我正在尝试使用配置单元将日期和时间戳值存储在timestamp列中。源文件包含日期值或有时是时间戳。
是否可以通过在配置单元中使用timestamp数据类型来读取日期和时间戳。
输入:
2015-01-01
2015-10-10 12:00:00.232
2016-02-01
我得到的输出:
null
2015-10-10 12:00:00.232
null
是否可以使用时间戳数据类型读取这两个值。
DDL:
create external table mytime(id string ,t timestamp) ROW FORMAT DELIMITED
FIELDS TERMINATED BY ','
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION 'hdfs://xxx/data/dev/ind/'
答案 0 :(得分:2)
我能想到一个解决方法。用一小组数据尝试了这个:
createConfig(); //=> Works
readConfig(); //=> Works
MySQL.connect(); //System.out.println => message
MySQL.createTable();
System.out.println("[MySQL] Plugin enabled!"); //=> no message
将数据从table1加载到table2
这应该以所需的格式加载数据。
`
INSERT OVERWRITE TABLE table2 select id,if(length(tsstr) > 10, tsstr, concat(tsstr,' 00:00:00')) from table1;
答案 1 :(得分:0)
Hive在数据类型映射方面与任何其他数据库类似,因此需要在特定数据类型下存储特定列的统一值。第二列文件中的数据包含非统一数据,有些是日期格式,有些则是时间戳格式。
为了不丢失日期,正如@Kishore所建议的那样,请确保文件中有统一的数据类型,并获取时间戳值为2016-01-01 00:00:000
的文件,其中只有日期。