Flink1.10和Hive集成一些需要注意的点

2024-09-06 21:08

本文主要是介绍Flink1.10和Hive集成一些需要注意的点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前几天,Flink官方release了Flink1.10版本,这个版本有很多改动。比如:

Flink 1.10 同时还标志着对 Blink的整合宣告完成,随着对 Hive 的生产级别集成及对 TPC-DS 的全面覆盖,Flink 在增强流式 SQL 处理能力的同时也具备了成熟的批处理能力。本篇博客将对此次版本升级中的主要新特性及优化、值得注意的重要变化以及使用新版本的预期效果逐一进行介绍。

其中最重要的一个特性之一是:推出了生产可用的 Hive 集成。

Flink 1.9推出了预览版的 Hive 集成。该版本允许用户使用 SQL DDL 将 Flink 特有的元数据持久化到 Hive Metastore、调用 Hive 中定义的 UDF 以及读、写 Hive 中的表。Flink 1.10 进一步开发和完善了这一特性,带来了全面兼容 Hive 主要版本的生产可用的 Hive 集成。

笔者就遇到的几个问题,归类总结如下。如果你在生产环境遇到各种奇奇怪怪得问题,可能带来一些启示:

架构设计

Flink在创建运行环境时会同时创建一个CatalogManager,这个CatalogManager就是用来管理不同的Catalog实例,我们的Flink运行环境就是通过这个访问Hive:

官网给出的例子如下:

Hive Catalog + Hive 需要一个配置文件

Hadoop和Spark链接Hive时都会有一个hive-site.xml的配置文件,同样Flink在和Hive集成时也需要一个配置文件:sql-client-hive.yaml 这个配置文件中包含了:hive配置文件的路径,执行引擎等。官网给出的配置案例:

官网同样给出了警示⚠️信息如下:

意思是说,本地需要一个hive-site.xml,另外sql-client-hive.yaml 中的planner配置必须为blink 。

SQL CLI工具支持

这个玩具类似一个对话窗口,可以通过脚本sql-client.sh 脚本启动,运行方法如下:

需要注意的是,运行脚本的当前机器必须有必须的环境变量,例如:HADOOP_CONF_DIR、HIVE_HOME、HADOOP_CLASSPATH等,把Hadoop集群搭建的时候指定的一些环境变量拿过来即可。

必要依赖和版本区别

Flink 1.10 对Hive集成支持了很多版本,对于不同的Hive版本需要不同的Jar包支持,具体可以参考: https://ci.apache.org/projects/flink/flink-docs-release-1.10/dev/table/hive/#connecting-to-hive

另外,官网还给出了目前对Hive支持的一些注意点⚠️:

很简单的英文,不再翻译了。

优点和不足

本次更新issue里提到了目前主要做的一些优化,包括:Projection Pushdown(只读取必要的列),Limit Pushdown(sql能limit的就limit,减少数据量),分区裁剪(只读必须分区)等等。总体来说目前都是sql优化的一些常用手段。

目前的不足之处主要包含:

存储格式目前还没有完全支持,We have tested on the following of table storage formats: text, csv, SequenceFile, ORC, and Parquet. ,相信很快就会再次release。

另外ACID、Bucket表暂时还不支持。

Hive作为数据仓库系统的绝对核心,承担着绝大多数的离线数据ETL计算和数据管理,期待Flink未来的完美支持。

欢迎点赞+收藏+转发朋友圈素质三连


文章不错?点个【在看】吧! ????

这篇关于Flink1.10和Hive集成一些需要注意的点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1143123

相关文章

SpringCloud集成AlloyDB的示例代码

《SpringCloud集成AlloyDB的示例代码》AlloyDB是GoogleCloud提供的一种高度可扩展、强性能的关系型数据库服务,它兼容PostgreSQL,并提供了更快的查询性能... 目录1.AlloyDBjavascript是什么?AlloyDB 的工作原理2.搭建测试环境3.代码工程1.

SpringBoot使用注解集成Redis缓存的示例代码

《SpringBoot使用注解集成Redis缓存的示例代码》:本文主要介绍在SpringBoot中使用注解集成Redis缓存的步骤,包括添加依赖、创建相关配置类、需要缓存数据的类(Tes... 目录一、创建 Caching 配置类二、创建需要缓存数据的类三、测试方法Spring Boot 熟悉后,集成一个外

Docker集成CI/CD的项目实践

《Docker集成CI/CD的项目实践》本文主要介绍了Docker集成CI/CD的项目实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学... 目录一、引言1.1 什么是 CI/CD?1.2 docker 在 CI/CD 中的作用二、Docke

SpringBoot集成SOL链的详细过程

《SpringBoot集成SOL链的详细过程》Solanaj是一个用于与Solana区块链交互的Java库,它为Java开发者提供了一套功能丰富的API,使得在Java环境中可以轻松构建与Solana... 目录一、什么是solanaj?二、Pom依赖三、主要类3.1 RpcClient3.2 Public

SpringBoot3集成swagger文档的使用方法

《SpringBoot3集成swagger文档的使用方法》本文介绍了Swagger的诞生背景、主要功能以及如何在SpringBoot3中集成Swagger文档,Swagger可以帮助自动生成API文档... 目录一、前言1. API 文档自动生成2. 交互式 API 测试3. API 设计和开发协作二、使用

SpringBoot如何集成Kaptcha验证码

《SpringBoot如何集成Kaptcha验证码》本文介绍了如何在Java开发中使用Kaptcha生成验证码的功能,包括在pom.xml中配置依赖、在系统公共配置类中添加配置、在控制器中添加生成验证... 目录SpringBoot集成Kaptcha验证码简介实现步骤1. 在 pom.XML 配置文件中2.

关于数据埋点,你需要了解这些基本知识

产品汪每天都在和数据打交道,你知道数据来自哪里吗? 移动app端内的用户行为数据大多来自埋点,了解一些埋点知识,能和数据分析师、技术侃大山,参与到前期的数据采集,更重要是让最终的埋点数据能为我所用,否则可怜巴巴等上几个月是常有的事。   埋点类型 根据埋点方式,可以区分为: 手动埋点半自动埋点全自动埋点 秉承“任何事物都有两面性”的道理:自动程度高的,能解决通用统计,便于统一化管理,但个性化定

购买磨轮平衡机时应该注意什么问题和技巧

在购买磨轮平衡机时,您应该注意以下几个关键点: 平衡精度 平衡精度是衡量平衡机性能的核心指标,直接影响到不平衡量的检测与校准的准确性,从而决定磨轮的振动和噪声水平。高精度的平衡机能显著减少振动和噪声,提高磨削加工的精度。 转速范围 宽广的转速范围意味着平衡机能够处理更多种类的磨轮,适应不同的工作条件和规格要求。 振动监测能力 振动监测能力是评估平衡机性能的重要因素。通过传感器实时监

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。