热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

hivespark引擎推送数据到es(elasticsearch)

需要导入相关的依赖jar包,例如es-hadoop的jar包。这里要特别注意:下载以后要传到hdfs一个地址,否则无法在hive中添加

需要导入相关的依赖jar包,例如es-hadoop的jar包。

这里要特别注意: 

下载以后要传到hdfs一个地址,否则无法在hive中添加,用hdfs dfs -put命令。

--导入依赖jar包
add jar hdfs://elasticsearch-hadoop-7.13.0.jar;
add jar hdfs://commons-httpclient-3.1.jar;
--设置hive引擎为spark引擎
set hive.execution.engine=spark;

创建es外部表:

create EXTERNAL TABLE IF NOT EXISTS profile_v2.shop_user_order(shop_id string comment'店铺id',user_id string comment'会员id',all_sale_total_amount bigint comment'累计下单金额(2016年开始支付的不考虑退货)单位:分',order_cnt bigint comment'下单次数(2016年开始支付的)',order_quantity_cnt bigint comment'下单件数(2016年开始支付的)',first_order_date string comment'首次下单时间(2016年开始支付yyyymmdd)',last_order_date string comment'最后下单时间(2016年开始支付yyyymmdd)',user_buyback_cycle bigint comment'客户回购周期(最后-首次)/下单次数)',order_unit_price bigint comment'客单价(累计下单金额/下单次数)',quantity_unit_price bigint comment'件单价(累计下单金额/下单件数)',hivetablename string,join_field struct
)
comment '店铺-会员-历史下单行为分析(全量)'
--指定存储格式为es相关
STORED BY 'org.elasticsearch.hadoop.hive.EsStorageHandler'
TBLPROPERTIES('es.resource' = 'user_profile','es.nodes'='10.112','es.port'='0','es.index.auto.create'='TRUE',--'es.mapping.id' = 'user_id','es.nodes.wan.only'='true','es.read.metadata'='true','es.mapping.names'='hivetablename:hiveTableName','es.mapping.routing'='user_id','es.mapping.join'='user_id'
);

配置信息: 

 --指定索引
  'es.resource' = 'user_profile',
  --es节点 多个用,分隔
  'es.nodes'='10.112',
  --es端口
  'es.port'='80',
  --是否自动创建索引
  'es.index.auto.create'='TRUE',
  --表示es的_id对应的字段
  --'es.mapping.id' = 'user_id',
  --默认为 false,设置为 true 之后,会关闭节点的自动 discovery,只使用es.nodes声明的节点进行数据读写操作;如果你需要通过域名进行数据访问,则设置该选项为 true,否则请务必设置为 false;
  'es.nodes.wan.only'='true',
  --要想把_id映射到Hive表字段中,必须使用这种方式
  'es.read.metadata'='true',
  --表示其他字段的对应(可以不写,插入时按顺序依次对应即可);
  'es.mapping.names'='hivetablename:hiveTableName',
  'es.mapping.routing'='user_id',
   'es.mapping.join'='user_id'

每天执行任务先修改别名: 

alter table profile_v2.shop_user_order SET TBLPROPERTIES ('es.resource'='user_profile_${indexdt}');

写入数据:


insert overwrite table profile_v2.shop_user_order
selectshop_id,user_id,all_sale_total_amount,order_cnt,order_quantity_cnt,regexp_replace(first_order_date,'-',''),regexp_replace(last_order_date,'-',''),user_buyback_cycle,order_unit_price,quantity_unit_price,'shop_user_order' as hiveTableName,named_struct('parent',user_id,'name','shop_user_order')
from profile.ads_shop_all_portrait_shop_user_order
where dt = '${dt}';

执行脚本:


dt=`date -d 'last day' +"%Y%m%d"`
indexdt=`date +"%Y-%m-%d"`
echo dt=$dt ... indexdt=$indexdtbase_dir='/home'
sql_name='test.sql'echo hive --hivevar dt=${dt} --hivevar indexdt=${indexdt} -f $base_dir/$sql_name
hive --hivevar dt=${dt} --hivevar indexdt=${indexdt} -f $base_dir/$sql_nameif [ $? -ne 0 ];thenecho "hive sql 运行报错,sql执行失败!"exit -1
fiecho " hive数据导入ES成功 ... "


推荐阅读
  • 本文探讨了Android系统中支持的图像格式及其在不同版本中的兼容性问题,重点涵盖了存储、HTTP传输、相机功能以及SparseArray的应用。文章详细分析了从Android 10 (API 29) 到Android 11 的存储规范变化,并讨论了这些变化对图像处理的影响。此外,还介绍了如何通过系统升级和代码优化来解决版本兼容性问题,以确保应用程序在不同Android版本中稳定运行。 ... [详细]
  • 本文详细介绍了 Spark 中的弹性分布式数据集(RDD)及其常见的操作方法,包括 union、intersection、cartesian、subtract、join、cogroup 等转换操作,以及 count、collect、reduce、take、foreach、first、saveAsTextFile 等行动操作。 ... [详细]
  • 在C#中开发MP3播放器时,我正在考虑如何高效存储元数据以便快速检索。选择合适的数据结构,如字典或数组,对于优化性能至关重要。字典能够提供快速的键值对查找,而数组则在连续存储和遍历方面表现优异。根据具体需求,合理选择数据结构将显著提升应用的响应速度和用户体验。 ... [详细]
  • 技术日志:深入探讨Spark Streaming与Spark SQL的融合应用
    技术日志:深入探讨Spark Streaming与Spark SQL的融合应用 ... [详细]
  • 深入理解Spark框架:RDD核心概念与操作详解
    RDD是Spark框架的核心计算模型,全称为弹性分布式数据集(Resilient Distributed Dataset)。本文详细解析了RDD的基本概念、特性及其在Spark中的关键操作,包括创建、转换和行动操作等,帮助读者深入理解Spark的工作原理和优化策略。通过具体示例和代码片段,进一步阐述了如何高效利用RDD进行大数据处理。 ... [详细]
  • MySQL初级篇——字符串、日期时间、流程控制函数的相关应用
    文章目录:1.字符串函数2.日期时间函数2.1获取日期时间2.2日期与时间戳的转换2.3获取年月日、时分秒、星期数、天数等函数2.4时间和秒钟的转换2. ... [详细]
  • 本文节选自《NLTK基础教程——用NLTK和Python库构建机器学习应用》一书的第1章第1.2节,作者Nitin Hardeniya。本文将带领读者快速了解Python的基础知识,为后续的机器学习应用打下坚实的基础。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 本文探讨了一种高效的算法,用于生成所有数字(0-9)的六位组合,允许重复使用数字,并确保这些组合的和等于给定的整数N。该算法通过优化搜索策略,显著提高了计算效率,适用于大规模数据处理和组合优化问题。 ... [详细]
  • 在Android应用开发中,实现与MySQL数据库的连接是一项重要的技术任务。本文详细介绍了Android连接MySQL数据库的操作流程和技术要点。首先,Android平台提供了SQLiteOpenHelper类作为数据库辅助工具,用于创建或打开数据库。开发者可以通过继承并扩展该类,实现对数据库的初始化和版本管理。此外,文章还探讨了使用第三方库如Retrofit或Volley进行网络请求,以及如何通过JSON格式交换数据,确保与MySQL服务器的高效通信。 ... [详细]
  • 在第二课中,我们将深入探讨Scala的面向对象编程核心概念及其在Spark源码中的应用。首先,通过详细的实战案例,全面解析Scala中的类和对象。作为一门纯面向对象的语言,Scala的类设计和对象使用是理解其面向对象特性的关键。此外,我们还将介绍如何通过阅读Spark源码来进一步巩固对这些概念的理解。这不仅有助于提升编程技能,还能为后续的高级应用开发打下坚实的基础。 ... [详细]
  • 如何在Spark数据排序过程中有效避免内存溢出(OOM)问题
    本文深入探讨了在使用Spark进行数据排序时如何有效预防内存溢出(OOM)问题。通过具体的代码示例,详细阐述了优化策略和技术手段,为读者在实际工作中遇到类似问题提供了宝贵的参考和指导。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 在Linux系统中,原本已安装了多个版本的Python 2,并且还安装了Anaconda,其中包含了Python 3。本文详细介绍了如何通过配置环境变量,使系统默认使用指定版本的Python,以便在不同版本之间轻松切换。此外,文章还提供了具体的实践步骤和注意事项,帮助用户高效地管理和使用不同版本的Python环境。 ... [详细]
  • 在探讨 AS3 中的数据深度复制技术时,本文详细介绍了实现数据深度克隆的有效方法。通过对比多种方案,最终确定了一种高效且可靠的实现方式,所有代码均来源于公开资源,确保了方法的实用性和可操作性。 ... [详细]
author-avatar
WJS0530_735
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有