hive查看表的详细信息
![](https://p0.ssl.img.360kuai.com/t018be27637c09aab3e.jpg?size=1080x459)
飞轮科技案例
本项目案例由飞轮科技投递并参与“数据猿年度金猿策划活动——2023大数据产业年度创新服务企业榜单/奖项”评选。
保险业务的持续拓展,离不开企业的数字化战略创新。平安人寿秉承“一站式服务”的理念,以数据驱动服务质量,并早在 2005 年已经建立了离线数仓,将业务系统的数据集中存储于 Oracle 中并按业务需求开发数据报表,同时根据寿险的不同业务主题搭建了数据集市,以加快报表生成。
随着大数据时代的到来,传统数据库出现性能瓶颈,基于 Oracle 的数据仓库无法满足海量数据的存储、处理与应用需求,因此在 2016 年平安人寿引入了 Hadoop 建立寿险大数据平台。在近十年的大数据技术探索中,以提升数据质量、加快业务数据分析效率、加速数据价值变现为目标,平安人寿基于大数据平台构建了数据中台并引入数据治理体系,全方位保障业务用数效率、提升数据生产力。在数据应用层引入了多个开源大数据处理和分析组件,结合业务对于分析的实际需求开发了多个数据应用系统,为业务用户分析决策提供支持。
如今,随着数智化时代的到来,数据价值的重要性得到更深度认可,深挖数据价值成为新的目标。在此背景下,平安人寿坚持技术创新,以更加开放的思路来应对不断增长的数据分析和应用需求,升级大数据产品体系正是其中至关重要的一步。
为了进一步提升数据应用效率、降低多组件带来的运维和使用成本,平安人寿自 2022 年起开始引入开源实时数据仓库 Apache Doris,对多个数据应用系统进行了升级,基于 Apache Doris 统一了 OLAP 引擎层技术栈。Apache Doris 的引入为平安人寿大数据产品体系打破了原有系统的数据“孤岛”、统一了数据开发与应用层查询服务,降低了需求的开发成本、加速了业务需求的交付周期,并满足业务方更高数据时效性与查询响应度的要求,最终形成更开放、灵活、可扩展的企业级管理与分析大数据产品体系,实现数据价值的最大化释放。
应用场景
基于实际的分析需求,平安人寿开发了各类数据应用系统以支持不同业务人群进行决策分析,包括面向管理层的报表分析系统、面向总部运营人员的即席查询系统、面向一线业务人用的多维分析系统以及面向总部与分公司营销人员的人群圈选系统。
- 报表分析系统:管理层需要通过报表全景分析对经营数据进行探查,了解各线业务经营情况,以支持业务洞察、问题定位、趋势预测以及经营全貌概览。当管理者在查看数据时,对于报表产出时效性与查询速度有较高的要求,通常单个报表页面涉及成千上百个指标计算,这时则需要 OLAP 能够支持高并发和低延迟响应,使报表响应时间控制在百毫秒以内。
- 即席查询:总部运营人员需要通过可视化分析直观地展示寿险理赔、核保、保全等数据结果,使运营人员能够更好地理解数据、及时地作出业务决策。在该场景中,实时、灵活地查询数据是业务运营人员最主要的诉求,因此 OLAP 需要满足数据及时更新与快速响应。
- 多维分析系统:一线业务人员结合指标数据进行多维分析,从不同角度来审视业务的衡量指标,以支持更细致的业务数据剖析。该场景是企业内最常见的应用场景,承接了一线业务 90 % 的查询流量,每日数据查询访问量高达数十万,对后台数据计算与前台响应的速度要求较高,且希望能够进行更复杂的指标二次开发。
- 人群圈选系统:总部与分公司营销人员需要通过对客户数据汇总计算后形成寿险用户属性、用户行为、用户消费等维度标签。营销人员借助多个标签找到潜在用户群体,以更精准投放与推广寿险产品。因此,灵活的开发与关联查询标签数据是营销人员最主要的诉求。
面临挑战
由于早期架构基于多个 OLAP 组件(包括 Presto 、PostgreSQL、Hive、Kylin、Druid、Clickhouse 以及 HBase)提供计算存储与查询服务,虽然能够满足业务要求,但架构复杂与链路过长势必会增加运维成本、学习成本,同时也无法保障系统之间多源数据的一致性。
更重要的是,随着用户规模的增长与业务场景多样化,数据的写入效率、查询时效性、后台稳定性也逐渐无法得到保证,时常影响业务分析效率。各场景面临的挑战具体包括:
1、报表分析系统
早期主要基于 Hive 与 PostgreSQL 支持该应用场景,当业务全域数据经过 ETL 清洗处理后,全量存储于 Hive 中。为了满足管理层快速查看报表的需求,开发人员首先会将数据进行多轮处理清洗,并采用预汇总结果的方式,将计算好的指标数据导入 PostgreSQL 中。
虽然这种方式能够应对查询低延迟响应的要求,但指标结果多轮计算会导致数据处理链路过长、各类成本的叠加,例如将数据拆分存储至 14 个 PostgreSQL 库中所造成的存储冗余与资源成本增加、将报表异地聚合与定制化开发所造成的开发成本增加、将 PostgreSQL 与应用端交叉使用所造成的运维成本增加等。
2、即席查询
早期即席查询场景由多个组件共同支持,其中 Hive 负责离线数据分层存储、PostgreSQL 用于存储指标结果数据、Presto 则作为查询引擎对 Hive 中数据查询下压。然而,由于业务查询严重依赖 PostgreSQL 中的指标数据,一旦未提前计算好指标,查询压力将全部交给 Presto,容易造成资源浪费、查询响应延迟等问题。同时,该系统的权限管理不清晰、业务之间没有资源隔离限制,所有业务运营人员均可以查询 Hive 底层中的数据,造成临时表多、查询任务并发过高、资源抢占等问题。
3、多维分析系统
早期该场景利用 Druid 组件提供维度与指标存储查询服务。在业务数据激增的过程中,平台容易出现导数失败或系统故障,Druid 节点重启时常需要 24 小时,系统超长重启时间对业务中断带来了巨大的风险。
同时,Druid 在查询性能中存在一定的局限性,如不支持关联查询、不支持精细去重。在理赔与用户数据 Join 的查询场景下,业务人员只能先将所需数据形成宽表满足查询需求;在面对用户数据精细去重时,只能对 Druid 组件功能改造。这些局限性不仅使查询复杂度增加,也会消耗大量的人力、学习、开发等成本。
4、人群圈选系统
早期该系统借助 HBase 提供标签计算与存储、Clickhouse 与 Kylin 作为人群圈选的查询引擎。
在标签构建过程中,由于 HBase 只能通过主键进行查询,不支持二级索引,无法使用复杂的查询语句和条件进行数据检索,开发人员需要通过主键来设计和实现标签查询,增加开发难度和复杂性。同时,HBase 的扩展能力也存在一定局限性,比如无法处理数字或日期等复杂数据类型、无法展开更细粒度的追踪调用。
在标签查询过程中,当系统面对 200 人的并发查询需求,Clickhouse 时常难以承载,需要借助 Kylin 通过 Cube 预聚合索引来分担查询压力。然而在两个组件共同提供服务时,Clickhouse 与 Kylin 配合灵活度不足成为目前系统最大的痛点之一。以查询 Array 字段为例,Clickhouse 支持 Array 而 Kylin 不支持,涉及到相关字段查询时,非常依赖于后端人工判断数据在哪种数据库中,再发送查询请求给 Clickhouse。除此之外,两个组件皆无法支持多表关联查询,也无法提供灵活的数值区间圈选。
应用技术与实施过程
引入 Apache Doris 后,平安人寿以 OLAP 引擎统一为基础,在 Apache Doris 集群之上构建了一体化指标与标签设计平台,形成 “上下经营一张表”,完善经营指标管理体系,并通过 API 接口直通应用层,面向多种场景的统一数据服务。
![](https://p0.ssl.img.360kuai.com/t0144bba8efdabdab74.png?size=1080x1223)
1、引擎优化:基于 Apache Doris 逐步统一 OLAP 技术栈
目前,平安人寿已使用 Apache Doris 替换了 HBase、PostgreSQL 、Presto 、Druid 组件,统一指标标签计算存储,支持报表分析、即席查询以及多维分析的应用,并已上线了管理层的报表应用系统、总部与一线运营人员的可视化分析系统。同时,平安人寿也已完成 Apache Doris 与各类数据源适配,进一步替换 Clickhouse、Kylin 组件。预计在今年 11 月份,Apache Doris 将上线并应用于营销机构人群圈选系统的生产使用。
通过 Apache Doris 一套系统同时满足数据存储、计算与查询服务,不仅避免了数据多轮计算带来的重复开发与冗余存储问题,更满足了更灵活、更细粒度、更高效的查询分析。平安人寿在应用上线后取得如下收益:
- 降低各类资源成本:借助 Apache Doris 丰富的数据模型,数据无需经过多轮预聚合汇总,能够大幅度简化数据处理流程,降低运维成本的同时释放了原 14 个 PostgreSQL 数据库的资源成本压力。
- 提升开发与查询效率:统一指标与标签数据开发在降本的同时更加速了业务交付时间,开发周期由原来的两周缩短至一天,效率提升 14 倍。在引入 Apache Doris 后,借助 Doris 设置了查询层级权限,使业务人员只可访问数据 ADS 层中的数据,解决数仓各表交叉使用的问题,提升指标数据复用率与使用效率;借助 Doris 优异的高并发性能满足了报表分析与多维分析场景下的秒级毫秒级的查询响应需求,查询提速达 5-10 倍。
- 打破数据孤岛,实现闭环管理:在统一技术栈的优势下,Apache Doris 打破了各类应用系统数据孤岛的现象,为业务人员提供了更全面的数据、更细粒度的维度查询,实现精细化的查询分析、一致的业务洞察视角、闭环式的数据管理,使企业上下更精准地掌握寿险经营走向。
2、语义与服务层优化:基于 Apache Doris 统一指标和标签服务
当统一了 OLAP 技术栈后,平安人寿进一步引入统一语义层,将复杂查询语句进行拆解转化,简化加速 SQL 语句执行效率,并借助数据服务 API 接入的方式,连接各业务应用层。
借助这种方式,平安人寿全域数据从采集接入后进入 Doris 数仓,业务人员在后台通过拖拽实现指标标签数据自助定义和自动计算,生成的 SQL 会发送至 Doris ADS 层中。其中,若涉及复杂的多表关联查询,SQL 语句会在语义层中过滤,生成简单的执行语句。借助通用的 API 服务,调用 Doris 库中数据,统一支持业务分析在客户经营、代理人、保单、产品、理赔等方面的需求。目前,平安人寿基于统一服务化平台已支持日均数百万次的数据调用,每张报表的查询响应时间实现 200 - 300 ms ,实现多场景下极速、统一的数据服务。
至此,平安人寿从数据设计直通数据服务,有效避免业务之间冗余开发与重复使用,缩短业务交付周期,加速查询响应时间。基于高内聚低耦合的统一服务平台,使查询分析能够及时配合业务需求变更,确保了企业内外数据流转的流畅性。
商业变化
一站式数据门户是平安人寿大数据产品体系自始至终的构建目标,基于 Apache Doris 统一 OLAP 多个技术栈,并将标签与指标标准化开发与管理,共同提供统一的数据服务,使业务分析师能够进行自助式的数据探查,减少对技术人员的依赖,同时,通过方便快捷地访问、分析和可视化各种数据资源,实现数据高效、低成本的交付。具体体现为:
- 降低各类资源成本:借助 Apache Doris 丰富的数据模型,大幅度简化数据处理流程,降低运维成本的同时释放了数据库的资源成本压力。
- 提升开发与查询效率:开发周期由原来的两周缩短至一天,效率提升 14 倍。借助 Doris 优异的高并发性能满足了报表分析与多维分析场景下的秒级毫秒级的查询响应需求,查询提速达 5-10 倍。
- 打破数据孤岛,实现闭环管理:在统一技术栈的优势下,Apache Doris 打破了各类应用系统数据孤岛的现象,为业务人员提供了更全面的数据、更细粒度的维度查询,实现精细化的查询分析、一致的业务洞察视角、闭环式的数据管理,使企业上下更精准地掌握寿险经营走向。
相关企业介绍
·中国平安人寿保险股份有限公司
中国平安人寿保险股份有限公司成立于2002年,是中国平安保险(集团)股份有限公司旗下的重要成员。公司服务网络遍布全国,向客户提供全周期人身保险产品和服务。
以人民为中心,坚定践行高质量发展。公司深入贯彻落实"渠道+产品"改革战略,推动以队伍质量、产品质量、服务质量为核心的各项改革,坚定不移地发展更为均衡的专业化销售渠道,并为客户提供更为适配的产品及服务,打造"省时、省心又省钱"的消费体验,守护消费者美好幸福生活。
·飞轮科技
北京飞轮数据科技有限公司是一家基于开源分析型数据库 Apache Doris 的商业化公司,秉承着 “开源技术创新”和“实时数仓服务”双轮驱动的战略,在投入资源大力参与 Apache Doris 社区研发和推广的同时,基于 Apache Doris 内核打造了聚焦于企业大数据实时分析需求的企业级产品 SelectDB ,面向新一代需求打造世界领先的实时分析能力。自成立一年来,获得 IDG 资本、红杉中国、襄禾资本等顶级 VC 的近 10 亿元融资,创下了近年来开源基础软件领域的新纪录。
","gnid":"9d60bfcdfac7bf5a0","img_data":[{"flag":2,"img":[{"desc":"","height":"459","title":"","url":"https://p0.ssl.img.360kuai.com/t018be27637c09aab3e.jpg","width":"1080"},{"desc":"","height":1223,"title":"","url":"https://p0.ssl.img.360kuai.com/t01ca2294481278dc4f.jpg","width":1080}]}],"original":0,"pat":"art_src_0,fts0,sts0","powerby":"pika","pub_time":1705064698000,"pure":"","rawurl":"http://zm.news.so.com/f9bc32722a9a252bb4f8755d73a4e674","redirect":0,"rptid":"ce7594034152c375","rss_ext":[],"s":"t","src":"数据猿","tag":[],"title":"中国平安人寿保险股份有限公司—基于Apache Doris统一OLAP技术栈实践
倪例薇4882hive查看是外部表还是内部表 -
冀征寒18433686156 ______ hive本身没有存储的.哪来的ETL.你可以使用hive来作为ETL的工具,就是自己开发存储接口.然后让hive(也就是通过map、reduce的方式)来做ETL.比如你想把oracle的数据导入到HBase中,只要自己实现一个Oracle的HiveStorageHandler,然后在hive中创建一个oracle的表(如果oracle中表已存在则创建外部表),再创建一个HBase表.然后然后通过HQL执行导入过程.
倪例薇4882如何查看 hive表 数据 存储位置 -
冀征寒18433686156 ______ 先明白数据仓库的作用--存储历史数据-进而对数据进行分析,只提供查询-不提供修改1.Hive 的目标是做成数据仓库,所以它提供了sql,提供了文件-表的映射关系,又由于Hive基于hdfs,所以搜索不提供Update,因为hdfs本身就不支持.2.HBase 是Nosql数据库-所以不要跟传统混淆并谈-Nosql 提供的是另一种思路来满足高性能的需求,而这些是传统数据库的短板,与传统数据库的理念不一样3.load data 这个可以自己去查.Hbase要使用自己的api4.是的.5.这句话不对.6.映射就是结构对应-如文件每一行的第一个字段-映射到Hive表的第一个字段 类似Hibernate的语法解析.
倪例薇4882hive怎么查看session -
冀征寒18433686156 ______ 当我们在终端下执行命令“hive”后,会看到有如下输出:Hive有会话(Session)的概念,而这次会话中的所有日志消息将会输出到这个日志文件中,包含SQL语句的执行日志,查看这个日志文件可以看到以下信息:QueryStart行日志包含QUERY_STRING、QUERY_ID.TaskStart行日志包含TASK_ID、QUERY_ID.
倪例薇4882怎么看hive表数据的hdfs -
冀征寒18433686156 ______ Hive的insert语句能够从查询语句中获取数据,并同时将数据Load到目标表中.现在假定有一个已有数据的表staged_employees(雇员信息全量表),所属国家cnty和所属州st是该表的两个属性,我们做个试验将该表中的数据查询出来插入到另一个表employe...
倪例薇4882怎样查询按年月分区的hive表前n个月的数据 -
冀征寒18433686156 ______ hivesql sql — 获取指定hive表或指定文件所hive表DDL按区则默认执行近7区DDL同table支持符合sql语则表达式表匹配则提示用户选择(使用file则自关闭该交互功能)
倪例薇4882如何用Hive访问Hadoop上数据 -
冀征寒18433686156 ______ 步骤 Hive提供了jdbc驱动,使得我们可以连接Hive并进行一些类关系型数据库的sql语句查询等操作,首先我们需要将这些驱动拷贝到报表工程下面,然后再建立连接,最后通过连接进行数据查询.拷贝jar包到FR工程 将hadoop里的hadoop-...
倪例薇4882如何查询hive的远程服务连接参数 -
冀征寒18433686156 ______ 1、hive 命令行模式,直接输入/hive/bin/hive的执行程序,或者输入 hive --service cli 用于linux平台命令行查询,查询语句基本跟mysql查询语句类似2、 hive web界面的 (端口号9999) 启动方式 hive –service hwi & 用于通过浏览器来访问hive,感...
倪例薇4882在Hadoop监控页面怎样查看Hive的完整SQL -
冀征寒18433686156 ______ Hive是建立在Hadoop上的数据仓库基础构架.它提供了一系列的工具,可以用来进行数据提取转化加载(ETL),这是一种可以存储、查询和分析存储在Hadoop中的大规模数据的机制.Hive定义了简单的类SQL查询语言,称为HQL,它允许熟悉SQL的用户查询数据.同时,这个语言也允许熟悉MapReduce开发者的开发自定义的mapper和reducer来处理内建的mapper和reducer无法完成的复杂的分析工作.Hive采用类SQL的查询方式,将SQL查询转换为MapReduce的job在Hadoop集群上执行
倪例薇4882spark sql怎么去获取hive 表一定日期范围内的数据 -
冀征寒18433686156 ______ select orderid,fenjian,timee from ( select orderid,fenjian,timee,row_number(orderid,fenjian) rn from ( select orderid,fenjian,timee from tableName distribute by orderid,fenjian sort by orderid,fenjian,timee asc) t1) t2 where t2.rn=1