通过hive向写elasticsearch的写如数据
通过hive向写elasticsearch的写如数据
hive 和 elasticsearch 的整合可以参考官方的文档:
ES-hadoop的hive整合 : https://www.elastic.co/guide/en/elasticsearch/hadoop/current/hive.html#hive
ES-hadoop的配置说明 : https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html
1. 新建一个hive表es_goods_order
将该hive表的数据存储指定到ES上,指定索引的ID列是goods_order_id('es.mapping.id' = 'goods_order_id',);
指定数据写入的方式是upsert('es.write.operation'='upsert'),如果id不存在就插入,如果存在就执行更新操作。
add jar file:///home/hadoop/lib/elasticsearch-hadoop-5.1.1.jar;
set username=fxin.zhao
use temp;
CREATE EXTERNAL TABLE es_goods_order(
goods_order_id string,
sale_place string,
station_place string,
multi_channel_id string,
business_date string,
discount string,
discount_type string,
payment_amouunt string,
refun_amount string
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.resource' = 'test_crm/es_goods_order',
'es.nodes'='10.10.110.125',
'es.port'='9200',
'es.mapping.id' = 'goods_order_id',
'es.write.operation'='upsert'
);
向es_goods_order表中插入数据:3分钟启用1个maper写入80万数据。Es中的index是在导入数据的时候检查的,如果不存在,则会创建。
add jar file:///home/hadoop/lib/elasticsearch-hadoop-5.1.1.jar;
use temp;
insert into table es_goods_order
select goods_order_id,
sale_place,
station_place,
multi_channel_id,
business_date,
discount,
discount_type,
payment_amouunt,
refun_amount
from ods.goods_order
where dt >= '2016-10-01'
and dt <= '2016-10-04';
- 验证upsert功能是否有效:再重新写入部分相同的数据。
insert into table es_goods_order
select goods_order_id,
sale_place,
station_place,
multi_channel_id,
business_date,
discount,
discount_type,
payment_amouunt,
refun_amount
from ods.goods_order
where dt = '2016-10-01'
limit 1000;
结论:
指定ID问题: 通过'es.mapping.id' = 'goods_order_id' 指定id。
数据更新问题: 通过'es.write.operation'='upsert' 来执行插入或者更新操作(如果id存在)。
- ES 的hive表基于json存储。
hadoop fs -put 20170111202237 /tmp/fuxin.zhao/es_json
add jar file:///home/hadoop/lib/elasticsearch-hadoop-5.1.1.jar;
use temp;
##创建一个临时表
CREATE EXTERNAL TABLE es_json_tmp (
json STRING
);
##给临时表添加数据
load data inpath '/tmp/fuxin.zhao/es_json/20170116185548' into table es_json_tmp;
drop table es_json;
##创建json格式的hive表
CREATE EXTERNAL TABLE es_json (
json STRING
)
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES(
'es.resource' = 'test_crm/es_json',
'es.nodes'='10.10.110.125',
'es.port'='9200',
'es.input.json' = 'yes',
'es.mapping.id' = 'uid'
);
##执行插入数据操作
insert into table es_json
select json
from es_json_tmp;
报出如下错误:
Caused by: org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest: Found unrecoverable error [10.10.110.125:9200] returned Bad Request(400) - Field [_id] is a metadata field and cannot be added inside a document. Use the index API request parameters.; Bailing out..
原因是json文档中的_id 字段是ES的元数据字段,属于ES的关键字,解决方法:
vi 20170116185548
将文档中的_id 替换成uid。
1,$s/_id/uid/g
通过hive向写elasticsearch的写如数据的更多相关文章
- 象写程序一样写博客:搭建基于github的博客
象写程序一样写博客:搭建基于github的博客 前言 github 真是无所不能.其 Pages 功能 支持上传 html,并且在页面中显示.于是有好事者做了一个基于 github 的博客管理工具 ...
- 《自己动手写CPU》写书评获赠书活动结果
<自己动手写CPU>写书评获赠图书的读者有: 京东:8***2.16号哨兵.magicyu.kk6803.jddickyd.杰出的胡兵 亚马逊:徐贺.马先童.jaychen.farmfar ...
- Python写的链接数据库存取数据
Python写的链接数据库存取数据 #!/usr/bin/python # -*- coding: UTF-8 -*- from __future__ import print_function im ...
- SSD 为什么顺序写比随机写性能更好?
SSD以Page为单位做读写,以Block为单位做垃圾回收,Page一般有16KB大小,Block一般有几十MB大小,SSD写数据的逻辑是: 1)将该块数据所在的Page读出 2)修改该Page中该块 ...
- 如果使用引用方式引用了js后 则不能再本地写js 因为写了后不会有效果
如果使用引用方式引用了js后 则不能再本地写js 因为写了后不会有效果
- mnesia的脏写和事物写的测试
在之前的文章中,测试了脏读和事物读之间性能差别,下面测试下脏写和事物写之间的性能差别: 代码如下: -module(mnesia_text). -compile(export_all). -recor ...
- OS: 读者写者问题(写者优先+LINUX+多线程+互斥量+代码)(转)
一. 引子 最近想自己写个简单的 WEB SERVER ,为了先练练手,熟悉下在LINUX系统使用基本的进程.线程.互斥等,就拿以前学过的 OS 问题开开刀啦.记得当年学读者写者问题,尤其是写者优先的 ...
- Qt侠:像写诗一样写代码,玩游戏一样的开心心情,还能领工资!
[软]上海-Qt侠 2017/7/12 16:11:20我完全是兴趣主导,老板不给我钱,我也要写好代码!白天干,晚上干,周一周五干,周末继续干!编程已经深入我的基因,深入我的骨髓,深入我的灵魂!当我解 ...
- 程序代写, CS代写, 代码代写, CS编程代写, java代写, python代写, c++/c代写, R代写, 算法代写, web代写
互联网一线工程师程序代写 微信联系 当天完成 查看大牛简介特色: 学霸代写,按时交付,保证原创,7*24在线服务,可加急.用心代写/辅导/帮助客户CS作业. 客户反馈与评价 服务质量:保证honor ...
随机推荐
- Hive 体系结构
1.Hive架构与基本组成 下面是Hive的架构图. 图1.1 Hive体系结构 Hive的体系结构可以分为以下几部分: (1)用户接口主要有三个:CLI,Client 和 W ...
- Microsoft SQL Server on Linux破解 2G内存限制
首先,贴上微软官方安装方法,大家按照官方的操作就行. 微软官方安装方法 相信很多同学遇到一个问题就是: sqlservr: This program requires a machine with a ...
- 【POJ】3378 Crazy Thairs(树状数组+dp+高精)
题目 传送门:QWQ 分析 题意:给个数列,求有多少五元上升组 考虑简化一下问题:如果题目求二元上升组怎么做. 仿照一下逆序对,用树状数组维护一下就ok了. 三元怎么做呢? 把二元的拓展一位就可以了, ...
- Solr进行Distinct 获取Count
今天碰到一个问题,数据之前入solr的时候并没有计算条数,现在需要计算出某几个表中去重后的总数. 由于solr的ISearch并没有相关的Distinct功能.想到一个解决方案是用Solr的Facet ...
- QQ中的国家城市数据。
在QQ安装目录可以找到loclist.xml文件 C:\Program Files\Tencent\QQ\I18N\2052 以上是中文版,若需要英文版,可安装国际版...在1033目录 code都是 ...
- nginx收到空包问题
tcpdump有收包,但是nginx的access.log显示post数据为空 可以通过tcpdump监控端口 http://www.cnblogs.com/linn/p/4792468.html 修 ...
- Raspberry Pi 安装FTP(Pure-FTP)
Raspbian版本: 安装: 因为使用的是默认的pi用户,所以下面的命令都带着sudo. 安装Pure-FTP sudo apt-get install pure-ftpd 2. 创建用户组ftpg ...
- 检测Python程序的执行效率
无意中被问到代码执行效率的问题,那就总结一下检测代码执行效率的几种方式: 一.装饰器 在函数上加装饰器,来得到函数的执行时间. def cst_time(func, *args, **kwargs): ...
- 20165233 学习基础和C语言基础调查
学习基础与<做中学>阅读心得 读<做中学>有感 娄老师通过在学习工作中总结出的"做中学"的方式,将其运用到减肥.五笔训练.乒乓球训练以及英文单词背诵的过程中 ...
- 461. Hamming Distance + 477. Total Hamming Distance
▶ 与 Hamming 距离相关的两道题. ▶ 461. 求两个数 x 与 y 的哈夫曼距离. ● 代码,4 ms,对 x 和 y 使用异或,然后求值为 1 的位的个数. class Solutio ...