For*_*ner 6 hadoop hive create-table opencsv hive-serde
我正在尝试使用OpenCSVSerde以及一些整数和日期列创建一个表。但是列将转换为String。这是预期的结果吗?解决方法是,在此步骤之后进行显式类型转换(这会使完整的运行变慢)
hive> create external table if not exists response(response_id int,lead_id int,creat_date date ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde' WITH SERDEPROPERTIES ('quoteChar' = '"', 'separatorChar' = '\,', 'serialization.encoding'='UTF-8', 'escapeChar' = '~') location '/prod/hive/db/response' TBLPROPERTIES ("serialization.null.format"="");
OK
Time taken: 0.396 seconds
hive> describe formatted response;
OK
# col_name data_type comment
response_id string from deserializer
lead_id string from deserializer
creat_date string from deserializer
Run Code Online (Sandbox Code Playgroud)
解释将数据类型更改为字符串的源代码。
这是CSVSerDe serde的已知限制。CSVSerDe将所有列都视为String类型。即使使用此SerDe创建具有非字符串列类型的表,DESCRIBE TABLE输出也将显示字符串列类型。从SerDe中检索类型信息。要将表中的列转换为所需类型,可以在将CAST转换为所需类型的表上创建视图。
参见此处:CSVSerde这种融合是关于CSVSerDe的,但是它使用Open-CSV
另请参阅此处:https : //docs.aws.amazon.com/athena/latest/ug/csv.html
| 归档时间: |
|
| 查看次数: |
1793 次 |
| 最近记录: |