带有没有分隔符的数据的 Hive

Posted

技术标签:

【中文标题】带有没有分隔符的数据的 Hive【英文标题】:Hive with data that does not have a delimiter 【发布时间】:2017-05-15 19:08:55 【问题描述】:

我在 HDFS 中有一些没有分隔符的数据。也就是说,各个数据字段由它们在行中的位置来标识。

例如,

CountryXTOWNYCRIMEVALUEZ

所以这里的国家是 0 到 7,城镇是 8 到 12,犯罪统计数据是 13 到 23。

有没有办法将这样组织的数据直接导入 Hive?我想一个可行的方法是设计一个划分数据的map reduce作业,但我想知道是否有一个Hive命令可以用来直接导入数据?

【问题讨论】:

【参考方案1】:

RegexSerDe

create external table mytable 
( 
    country         string
   ,town            string
   ,crime_statistic string 
)
row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
with serdeproperties  
(
    'input.regex' = '^(.8)(.5)(.*)$'
)
location '/...location of the data...'
;

select * from mytable
;

+----------+-------+-----------------+
| country  | town  | crime_statistic |
+----------+-------+-----------------+
| CountryX | TOWNY | CRIMEVALUEZ     |
+----------+-------+-----------------+

【讨论】:

以上是关于带有没有分隔符的数据的 Hive的主要内容,如果未能解决你的问题,请参考以下文章

Hive之 数据存储

Hive数据模型

hive中创建外部分区表使用location是指定数据存放位置还是指数据来源

hive load数据时如何设定为分隔符?

hive 行分隔符怎么指定? 有指定的必要吗?

大数据离线开发8.3 Hive的数据模型