首先请原谅,如果这个问题非常规律,我对HIVE非常陌生,并且我会亲自动手。我需要在comma(',')delimeter的帮助下将数据插入表格列的位置,下面是一个示例条目:
列标题:Name,status,location
示例数据:Arverne,closed,"312 Beach 54 Street Arverne,NY 11692 (40.59428994144626, -73.78442865540268)"
问题是当我尝试FIELDS TERMINATED BY','作为位置时,只能获取“312 Beach 54 Street Arverne ,但要求是获取 312 Beach 54 Street Arverne,NY 11692(40.59428994144626,-73.78442865540268)
create table library(name string,Location string) row format delimited
fields terminated by ',' stored as TextFile;
答案 0 :(得分:1)
tblproperties(' serialization.last.column.takes.rest' =' true')
create external table library (Name string,status string,location string)
row format delimited
fields terminated by ','
tblproperties ('serialization.last.column.takes.rest'='true')
;
select * from library
;
+---------+--------+---------------------------------------------------------------------------------+
| name | status | location |
+---------+--------+---------------------------------------------------------------------------------+
| Arverne | closed | "312 Beach 54 Street Arverne,NY 11692 (40.59428994144626, -73.78442865540268)" |
+---------+--------+---------------------------------------------------------------------------------+
<强> OpenCSVSerde 强>
https://cwiki.apache.org/confluence/display/Hive/CSV+Serde
https://github.com/ogrodnek/csv-serde
默认服务属性
create external table library (Name string,status string,location string)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
stored as textfile
;
select * from library
;
+---------+--------+-------------------------------------------------------------------------------+
| name | status | location |
+---------+--------+-------------------------------------------------------------------------------+
| Arverne | closed | 312 Beach 54 Street Arverne,NY 11692 (40.59428994144626, -73.78442865540268) |
+---------+--------+-------------------------------------------------------------------------------+
显式SerDe属性
create external table library (Name string,status string,location string)
row format serde 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
with serdeproperties
(
'separatorChar' = ','
,'quoteChar' = '"'
,'escapeChar' = '\\'
)
stored as textfile
;
select * from library
;
+---------+--------+-------------------------------------------------------------------------------+
| name | status | location |
+---------+--------+-------------------------------------------------------------------------------+
| Arverne | closed | 312 Beach 54 Street Arverne,NY 11692 (40.59428994144626, -73.78442865540268) |
+---------+--------+-------------------------------------------------------------------------------+