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'这样的用法。多列的话,就用英文逗号分隔。