ElasticSearch-Hadoop:从Hadoop到ElasticSearch索引产品视图计数和客户顶部搜索查询

这篇文章涵盖了如何使用ElasticSearch-Hadoop从Hadoop系统读取数据并在ElasticSearch中对其进行索引。 它涵盖的功能是在最近n天中为每个客户的产品浏览量计数和热门搜索查询编制索引。 可以在网站上进一步使用分析后的数据来显示最近浏览过的客户,产品浏览次数和热门搜索查询字符串。

继续之前的文章

  • 客户产品搜索使用大数据进行点击分析 ,
  • Flume:使用Apache Flume收集客户产品搜索点击数据 ,
  • Hive:使用Apache Hive查询客户最喜欢的搜索查询和产品视图计数 。

我们已经有了使用Flume收集并存储在Hadoop HDFS和ElasticSearch中的客户搜索点击数据,以及如何使用Hive分析相同数据并生成统计数据。 在这里,我们将进一步了解如何使用分析后的数据来增强网站上的客户体验并使之与最终客户相关。

最近浏览过的商品

我们已经在第一部分介绍了如何使用水槽ElasticSearch接收器将最近查看的商品目录索引到ElasticSearch实例,以及如何使用数据为客户显示实时点击的商品。

弹性搜索-Hadoop

Elasticsearch for Apache Hadoop允许Hadoop作业使用小型库和易于设置的方式与ElasticSearch进行交互。

Elasticsearch-hadoop-hive,允许使用Hive访问ElasticSearch。 正如上一篇文章中所分享的那样,我们在Hive表中提取了产品视图计数以及客户排名最高的搜索查询数据。 我们将读取相同的数据并将其索引到ElasticSearch,以便将其用于网站上的显示目的。

elasticsearch-hadoop-hive

产品视图计数功能

采取一个方案来显示客户在最近n天中的每个产品总观看次数。 为了获得更好的用户体验,您可以使用相同的功能向最终客户显示其他客户对同一产品的看法。

蜂房数据用于产品视图

从配置单元表中选择示例数据:

# search.search_productviews : id, productid, viewcount
61, 61, 15
48, 48, 8
16, 16, 40
85, 85, 7

产品视图计数索引

创建Hive外部表“ search_productviews_to_es”以将数据索引到ElasticSearch实例。

Use search;
DROP TABLE IF EXISTS search_productviews_to_es;
CREATE EXTERNAL TABLE search_productviews_to_es (id STRING, productid BIGINT, viewcount INT) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'productviews/productview', 'es.nodes' = 'localhost', 'es.port' = '9210', 'es.input.json' = 'false', 'es.write.operation' = 'index', 'es.mapping.id' = 'id', 'es.index.auto.create' = 'yes');
INSERT OVERWRITE TABLE search_productviews_to_es SELECT qcust.id, qcust.productid, qcust.viewcount FROM search_productviews qcust;
  • 创建外部表search_productviews_to_es指向ES实例
  • 使用的ElasticSearch实例配置为localhost:9210
  • 索引“ productviews”和文档类型“ productview”将用于索引数据
  • 如果索引和mappin不存在,则会自动创建
  • 如果基于ID字段已经存在,则插入覆盖将覆盖数据。
  • 通过从另一个存储分析/统计数据的配置单元表“ search_productviews”中选择数据来插入数据。

执行Java中的Hive脚本以索引产品视图数据HiveSearchClicksServiceImpl.java

Collection<HiveScript> scripts = new ArrayList<>();HiveScript script = new HiveScript(new ClassPathResource("hive/load-search_productviews_to_es.q"));scripts.add(script);hiveRunner.setScripts(scripts);hiveRunner.call();

productviews索引样本数据

ElasticSearch索引中的样本数据存储如下:

{id=48, productid=48, viewcount=10}
{id=49, productid=49, viewcount=20}
{id=5, productid=5, viewcount=18}
{id=6, productid=6, viewcount=9}

客户热门搜索查询字符串功能

以一种情况为例,您可能希望显示单个客户或网站上所有客户的热门搜索查询字符串。 您可以使用它来显示网站上的热门搜索查询云。

Hive Data用于客户热门搜索查询

从配置单元表中选择示例数据:

# search.search_customerquery : id, querystring, count, customerid
61_queryString59, queryString59, 5, 61
298_queryString48, queryString48, 3, 298
440_queryString16, queryString16, 1, 440
47_queryString85, queryString85, 1, 47

客户热门搜索查询索引

创建Hive外部表“ search_customerquery_to_es”以将数据索引到ElasticSearch实例。

Use search;
DROP TABLE IF EXISTS search_customerquery_to_es;
CREATE EXTERNAL TABLE search_customerquery_to_es (id String, customerid BIGINT, querystring String, querycount INT) STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler' TBLPROPERTIES('es.resource' = 'topqueries/custquery', 'es.nodes' = 'localhost', 'es.port' = '9210', 'es.input.json' = 'false', 'es.write.operation' = 'index', 'es.mapping.id' = 'id', 'es.index.auto.create' = 'yes');
INSERT OVERWRITE TABLE search_customerquery_to_es SELECT qcust.id, qcust.customerid, qcust.queryString, qcust.querycount FROM search_customerquery qcust;
  • 创建外部表search_customerquery_to_es指向ES实例
  • 使用的ElasticSearch实例配置为localhost:9210
  • 索引“ topqueries”和文档类型“ custquery”将用于索引数据
  • 如果索引和mappin不存在,则会自动创建
  • 如果基于ID字段已经存在,则插入覆盖将覆盖数据。
  • 通过从另一个存储分析/统计数据的配置单元表“ search_customerquery”中选择数据来插入数据。

在Java中执行Hive脚本以索引数据HiveSearchClicksServiceImpl.java

Collection<HiveScript> scripts = new ArrayList<>();HiveScript script = new HiveScript(new ClassPathResource("hive/load-search_customerquery_to_es.q"));scripts.add(script);hiveRunner.setScripts(scripts);hiveRunner.call();

topqueries索引样本数据

ElasticSearch实例上的topqueries索引数据如下所示:

{id=474_queryString95, querystring=queryString95, querycount=10, customerid=474}
{id=482_queryString43, querystring=queryString43, querycount=5, customerid=482}
{id=482_queryString64, querystring=queryString64, querycount=7, customerid=482}
{id=483_queryString6, querystring=queryString6, querycount=2, customerid=483}
{id=487_queryString86, querystring=queryString86, querycount=111, customerid=487}
{id=494_queryString67, querystring=queryString67, querycount=1, customerid=494}

上面描述的功能仅是示例功能,当然需要扩展以映射到特定的业务场景。 这可能涵盖在网站上向客户显示搜索查询云或进一步进行商业智能分析的业务场景。

Spring数据

还包括用于测试目的的Spring ElasticSearch,用于创建ESRepository以对总记录进行计数并删除All。
检查服务以获取详细信息, ElasticSearchRepoServiceImpl.java

产品总观看次数:

@Document(indexName = "productviews", type = "productview", indexStoreType = "fs", shards = 1, replicas = 0, refreshInterval = "-1")
public class ProductView {@Idprivate String id;@Versionprivate Long version;private Long productId;private int viewCount;......}public interface ProductViewElasticsearchRepository extends ElasticsearchCrudRepository<ProductView, String> { }long count = productViewElasticsearchRepository.count();

客户热门搜索查询:

@Document(indexName = "topqueries", type = "custquery", indexStoreType = "fs", shards = 1, replicas = 0, refreshInterval = "-1")
public class CustomerTopQuery {@Idprivate String id;@Versionprivate Long version;private Long customerId;private String queryString;private int count;......}public interface TopQueryElasticsearchRepository extends ElasticsearchCrudRepository<CustomerTopQuery, String> { }long count = topQueryElasticsearchRepository.count();

在以后的文章中,我们将介绍使用计划作业进一步分析数据,

  • 使用Oozie计划针对配置单元分区进行协调的作业,并将作业捆绑以将数据索引到ElasticSearch。
  • 使用Pig来计算唯一客户总数等

翻译自: https://www.javacodegeeks.com/2014/05/elasticsearch-hadoop-indexing-product-views-count-and-customer-top-search-query-from-hadoop-to-elasticsearch.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/341641.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

协议转换器是怎么分类的?主要有哪些类别?

工业通信采用的通信接口各不相同&#xff0c;需要多个设备之间的信息共享和数据交换&#xff0c;而常用的工控设备通信口有RS-232、RS-485、CAN和网络&#xff0c;由于各种通信结构的协议不兼容&#xff0c;使得异构网络之间的操作和信息交换难以进行&#xff0c;通过多协议转换…

协议转换器的特点有哪些?

现如今&#xff0c;随着计算机网络技术的迅猛发展&#xff0c;我们建立了大量的多种多样的网络系统&#xff0c;导致各种网络之间如何互连的问题。一个办法是推行国际标准&#xff0c;051网络体系结构及通信协议的国际标准已越来越成熟。但是&#xff0c;要把大量已存在的非051…

协议转换器的作用有哪些?

协议转换器一般用一个ASIC芯片就可以完成&#xff0c;成本低&#xff0c;体积小。它可以将IEEE802.3协议的以太网或V.35数据接口同标准G.703协议的2M接口之间进行相互转换。也可以在232/485/422串口和E1、CAN接口及2M接口进行转换&#xff0c;那么协议转换器的作用有哪些呢&…

协议转换器主要是应用在哪些地方?

协议转换器也叫接口转换器&#xff0c;它能使处于通信网上采用不同高层协议的主机仍然互相合作&#xff0c;完成各种分布式应用&#xff0c;它工作在传输层或更高。那么&#xff0c;协议转换器的作用有哪些呢&#xff1f;主要是应用在什么地方的呢&#xff1f;接下来就跟随飞畅…

协议转换器指示灯的含义

很多对协议转换器了解不是很深的朋友&#xff0c;对协议转换器上面的各个指示灯可能会区分不清&#xff0c;很多情况下会搞不清各个指示灯的含义&#xff0c;接下来杭州飞畅科技的小编就来带大家详细了解下协议转换器上各个指示灯的含义&#xff0c;一起来看看吧&#xff01; …

V.35协议转换器指示灯告警常见故障以及排除方法解析

我们在使用协议转换器的时候&#xff0c;可能常常会遇到一些故障问题&#xff0c;这个可能会困扰到很多朋友&#xff0c;在这里&#xff0c;杭州飞畅的小编专门整理了V.35系列协议转换器在使用过程中的一些常见的故障问题及解决方法&#xff0c;感兴趣的朋友可以一起来看看吧&a…

飞畅科技V.35协议转换器指示灯告警说明详细介绍

飞畅V.35系列协议转换器实现了E1接口与V.35接口之间的相互转换&#xff0c;是杭州飞畅科技推出的又一款广泛使用、备受好评的设备。此转换器的E1接口支持成帧和透明两种模式&#xff0c;广泛应用于计算机网络互连、DDN数据网接入、移动电话网的传输优化和基于E1的PCM网络的各种…

计算机图形学论文_论图计算

计算机图形学论文自从机械计算开始以来&#xff0c;图形概念就已经存在&#xff0c;并且在纯数学领域已经存在了数十年。 由于数据库的黄金时代&#xff0c;图形在软件工程中变得越来越流行。 图形数据库提供了一种持久化和处理图形数据的方法。 但是&#xff0c;图形数据库并不…

2M线路保护实现与应用

由于传输电路是出于最底层的物理传送平面&#xff0c;目前这些传输电路调度工作仍然停留在手工调度&#xff0c;即耗费大量的人力物力&#xff0c;又花费大量的宝贵时间&#xff0c;尤其在紧急故障发生的时候&#xff0c;严重影响故障的抢修速度&#xff0c;从而影响通信网络恢…

E1倒换保护设备知识详解

E1倒换是一款针对于国内重要部门而开发的保护设备&#xff0c;针对某些重要用户要求&#xff0c;E1倒换设备除了可以满足主、备两个传输路由间无损伤自动切换外&#xff0c;还可以满足主、备用户设备间自动切换。那么&#xff0c;什么是E1倒换&#xff0c;E1倒换保护怎么分类&a…

E1 PCM复用设备常见故障及处理方法

目前国内PCM设备技术发展非常迅速&#xff0c;PCM设备在通信系统中也是使用最多最常用到的。但是不少用户在使用PCM设备时会遇到各种故障&#xff0c;那么&#xff0c;我们该如何解决呢&#xff1f;接下来就由飞畅科技的小编来为大家介绍下E1 PCM复用设备常见故障及处理方法。 …

E1 PCM复用设备作用

Pulse Code Modulation&#xff08;PCM&#xff09;&#xff0c;中文称脉码调制或PCM复用设备&#xff0c;PCM复用设备的目的就是使交换机之间一条中继线不是只传送一条电话信号。 PCM复用设备也就是将语音&#xff0c;数据信号复接成2M信号的设备&#xff0c;直白一点就是将如…

变色龙功能

在《神秘博士》中&#xff0c;卡梅利恩&#xff08;Kamelion&#xff09;角色是可以采取任何形式的机器人。 据称&#xff0c;他们使用的物理道具非常麻烦&#xff0c;只有其创建者才能理解&#xff0c;而该创建者并没有帮助纠正它。 因此&#xff0c;Chamelion功能... 考虑以…

PCM复用设备的安装和使用注意事项

PCM设备在通信系统中的是一种很常用的设备&#xff0c;但是不少用户在购买了PCM设备后&#xff0c;都不懂怎么去安装使用PCM复用设备。下面&#xff0c;飞畅科技的小编来为大家详细介绍下PCM复用设备的安装和使用注意事项&#xff0c;一起来看看吧&#xff01; PCM复用设备的安…

PCM复用设备功能介绍

PCM设备功能主要分为四大部分&#xff1a;接入与复用、时隙交叉、2M线路保护、接口测试功能。接下来就由飞畅科技的小编来为大家详细介绍下PCM复用设备的功能&#xff0c;一起来看看吧&#xff01; PCM复用功能&#xff1a; 用户业务接入与复用是PCM设备最基本的功能&#xff…

对象和索引流

我本来要写一篇关于如何将流与每个元素的索引混合的文章&#xff0c;但是Baeldung上的人们已经很好地涵盖了这个主题 &#xff01; 鉴于我是他们编辑团队的一员&#xff0c;我为他们/我们感到自豪。 有趣的是&#xff0c;特别是Streams中的Java函数式编程如何使我们脱离了一些…

PCM复用设备主要传输什么业务?

PCM即脉冲编码调制&#xff0c;在通信系统中完成将语音信号数字化功能。PCM的实现主要包括三个步骤完成&#xff1a;抽样、量化、编码。分别完成时间上离散、幅度上离散、及量化信号的二进制表示。 1、 抽样&#xff1a;所谓抽样&#xff0c;就是对模拟信号进行周期性扫描&…

Pcm设备2M通道,E1的基础知识介绍

Pcm设备2M通道在业内常简述为E1&#xff0c;E1这个词在通信行业起着非常重要的作用&#xff0c;相信刚接触这个词的人必定会感到陌生。接下来就由飞畅科技的小编来为您详细的介绍一下E1的基础知识。 一、E1概述 E1是ITU-T制定并由欧洲邮政与电信协会&#xff08;CEPT&#xff…

数据结构栈的知识_数据知识栈

数据结构栈的知识并发不适合胆小者 我们都知道并发编程很难正确实现。 这就是为什么在执行线程任务之后要进行大量的设计和代码审查会议。 您永远不会将并发问题分配给经验不足的开发人员。 仔细分析问题空间&#xff0c;提出设计&#xff0c;并记录和审查解决方案。 这就是通…

PCM设备E1保护切换功能介绍

脉冲编码调制&#xff08;PulseCodeModulation&#xff09;&#xff0c;简称PCM。是对连续变化的模拟信号进行抽样、量化和编码产生的数字信号。PCM的优点就是音质好&#xff0c;缺点就是体积大。PCM可以提供用户从2M到155M速率的数字数据专线业务&#xff0c;也可以提供话音、…