[英]Creating structured hive table with unstructured GPS packets in csv format
[英]Load data in CSV format in Hive Table
我正在嘗試將以下數據以csv文件的形式存儲到Hive表中,但無法成功完成
Ann, 78%,7,
Beth,81%,5,
Cathy,83%,2,
數據存在CSV文件中。 我使用以下定義在Hive中創建了表:
Hive> CREATE TABLE test1 (Name String, Perc String, Rank String)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES ("input.regex" = "^(\w+)\,(\w+)\%\,(\w+)$",
"output.format.string" = "%1$s %2$s %3$s" )
STORED AS TEXTFILE;"
ok
hive> load data local inpath '/tmp/input.csv' into table test1;
ok
hive> Select * from test1;
ok
Name Perc Rank
Null Null Null
Null Null Null
Null Null Null
我無法找出錯誤。 結果數據未加載到表中。
您不需要RegexSerDe。 您應該能夠將定界符設置為逗號。
CREATE TABLE test1 (Name String, Perc String, Rank String) ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS TEXTFILE;
您也可以簽出此CVS Serde。 https://github.com/ogrodnek/csv-serde
如果需要靈活性,請使用OpenCSVSerde
。
CREATE EXTERNAL TABLE `mydb`.`mytable`(
`product_name` string,
`brand_id` string,
`brand` string,
`color` string,
`description` string,
`sale_price` string)
PARTITIONED BY (
`seller_id` string)
ROW FORMAT SERDE
'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
'separatorChar' = '\t',
'quoteChar' = '"',
'escapeChar' = '\\')
STORED AS INPUTFORMAT
'org.apache.hadoop.mapred.TextInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat'
LOCATION
'hdfs://namenode.com:port/data/mydb/mytable'
TBLPROPERTIES (
'serialization.null.format' = '',
'skip.header.line.count' = '1')
這樣,您就可以完全控制分隔符,引號字符,轉義字符,空值處理和標頭處理。
您可以像這樣使用HIVE的內置正則表達式UDF嗎?
create table temp (raw STRING);
load data local inpath '/tmp/input.csv' into table temp;
create table table1
as
select regexp_extract(line, "^(\w+)\,(\w+)\%\,(\w+)$", 1) Name,
regexp_extract(line, "^(\w+)\,(\w+)\%\,(\w+)$", 2) Perc,
regexp_extract(line, "^(\w+)\,(\w+)\%\,(\w+)$", 3) Rank
from temp;
根據您的示例cvs數據,您的正則表達式不匹配結尾的逗號,並且也不匹配cvs數據的第一個示例行中所示的可選空格字符。 您的正則表達式應從^(\\ w +)\\,(\\ w +)\\%\\,(\\ w +)$更改為:^(\\ w +)\\,\\ s *(\\ w +)\\%\\,(\\ w + )\\,$
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.