从hive到elasticsearch的自动插入

avkwfej4  于 2021-06-02  发布在  Hadoop
关注(0)|答案(1)|浏览(449)

我目前正试图找到一种方法,自动将hadoop文本文件中的数据添加到elasticsearch中。我们正在运行hive v0.11、hadoop v2.0.5、elasticsearch 1.7.1和elasticsearch hadoop v2.1.0。文件存储在路径/tmp/test log/apache2log(名为year/month/day)下的不同子文件夹中。此表创建用于从hadoop获取数据:

CREATE EXTERNAL TABLE apache2log(
userIP STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
thread STRING,
link STRING,
callerInformation STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED by '|'
LOCATION '/tmp/test-log/apache2log';

但是当我尝试创建一个表,在elasticsearch中插入这些数据时,创建工作正常,但是表是空的。我尝试了以下命令:

CREATE EXTERNAL TABLE apache2log(
userIP STRING,
identity STRING,
user STRING,
time STRING,
request STRING,
status STRING,
thread STRING,
link STRING,
callerInformation STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED by '|'
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
LOCATION '/tmp/test-log/apache2log'
TBLPROPERTIES(
'es.nodes'='1.2.3.4', 
'es.resource'='sam3/apache2',
'es.net.proxy.http.use.system.props'='false');

从默认设置更改的变量:

SET hive.input.dir.recursive=true;
SET hive.mapred.supports.subdirectories = true;
SET hive.supports.subdirectories=true;
SET mapred.input.dir.recursive = true;
SET hive.input.format=org.apache.hadoop.hive.ql.io.HiveInputFormat;

ADD JAR /usr/lib/gphd/hive-0.11.0_gphd_2_1_1_0/lib/elasticsearch-hadoop-2.1.0.jar;

我知道,有可能为elasticsearch创建第二个表,并使用insert添加数据。但是我需要这个过程是自动化的,所以添加到文件中的数据应该在到达hadoop时插入到表中。

nsc4cvqm

nsc4cvqm1#

我想这是不可能的。如果是这样,就不需要在单独的外部表中定义表的存储处理程序。

相关问题