hive数据往elasticsearch导入的时候,需要用到一个插件。详情可以查看官网。
具体的用法是这样:
- 在elasticsearch添加表。
- 在hive创建外部表
- 往hive插入数据
关键的步骤是在hive创建表的时候的定义:
CREATE EXTERNAL TABLE `report`(
`id` string,
`rep_date` string COMMENT 'from deserializer',
`hour_id` int COMMENT 'from deserializer',
`channel_id` string COMMENT 'from deserializer',
`activate_num` int COMMENT 'from deserializer')
ROW FORMAT SERDE
'org.elasticsearch.hadoop.hive.EsSerDe'
STORED BY
'org.elasticsearch.hadoop.hive.EsStorageHandler'
WITH SERDEPROPERTIES (
'serialization.format'='1')
TBLPROPERTIES (
'es.index.auto.create'='false',
'es.nodes'='192.168.1.2:9200',
'es.resource'='report/detail_date',
'es.mapping.id' = 'id'
)
如果你不需要指定elasticsearch的_id,那么'es.index.auto.create'='true',并且删掉es.mapping.id。默认的字段名一样,就可以实现导入。如果不一样,那么有'es.mapping.names'='hive_column:es_field'这样的用法。多列的话,就用英文逗号分隔。