天坑!Spark+Hive+Paimon+Dolphinscheduler

背景:

数据中台项目使用Spark+Hive+Paimon做湖仓底层,调度任务使用的是基于Dolphinscheduler进行二开。在做离线脚本任务开发时,在Paimon库下执行非查询类SQL报错。

INSERT报错

DELETE报错

 现状:

原始逻辑为数据中台中选择的Paimon数据源,实际上在Dolphinscheduler中是选择的Hive数据源。所以在Dolphinscheduler中,实际上是选择了一个SQL类型的任务节点,数据原类型选择Hive。执行后就会报以上两个错误。

排查思路以及解决方案:

在这种多组件复杂环境的情况下去排查问题,需要分段排查。首先确认是否是数据中台代码的问题。

1. 脱离数据中台直接在Dolphinscheduler创建一个工作流,任务节点选择SQL,选择Hive数据源执行insert代码。发现是同样的报错。

所以可以先排除是数据中台在创建Dolphinscheduler工作流的问题,但这不代表原逻辑正确。

2. Dolphinscheduler只是一个调度,除非是他无法实现这个功能,基本上不会出现问题,所以继续向下排查。

3. 排查Spark+Hive+Paimon

分别来看一下这三个组

为什么要学习这门课程?·新一代流式数据湖技术组件深入讲解,帮助你快速构造数据湖知识体系。·为构建湖仓一体架构提供底层技术支撑。本课程将从原理、架构、底层存储细节、性能优化、管理等层面对Paimon流式数据湖组件进行详细讲解,原理+实战,帮助你快速上手使用数据湖技术。讲师介绍华为HCIP认证大数据高级工程师北京猎豹移动大数据技术专家中科院大数据研究院大数据技术专家51CTO企业IT学院优秀讲师电子工业出版社2022年度优秀作者出版书籍:《Flink入门与实战》、《大数据技术及架构图解实战派》。本课程提供配套课件、软件、试题、以及源码。课程内容介绍:1、什么是Apache Paimon2、Paimon的整体架构3、Paimon的核心特点4、Paimon支持的生态5、基于Flink SQL操作Paimon6、基于Flink DataStream API 操作Paimon7、Paimon中的内部表和外部表8、Paimon中的分区表和临时表9、Paimon中的Primary Key表(主键表)10、Paimon中的Append Only表(仅追加表)11、Changelog Producers原理及案例实战12、Merge Engines原理及案例实战13、Paimon中的Catalog详解14、Paimon中的Table详解15、PaimonHive Catalog的使用16、动态修改Paimon表属性17、查询Paimon系统表18、批量读取Paimon表19、流式读取Paimon表20、流式读取高级特性Consumer ID21、Paimon CDC数据摄取功能22、CDC之MySQL数据同步到Paimon23、CDC之Kafka数据同步到Paimon24、CDC高级特性之Schema模式演变25、CDC高级特性之计算列26、CDC高级特性之特殊的数据类型映射27、CDC高级特性之中文乱码28、Hive引擎集成Paimon29、在Hive中配置Paimon依赖30、在Hive中读写Paimon表31、在Hive中创建Paimon表32、HivePaimon数据类型映射关系33、Paimon底层文件基本概念34、Paimon底层文件布局35、Paimon底层文件操作详解36、Flink流式写入Paimon表过程分析37、读写性能优化详细分析38、Paimon中快照、分区、小文件的管理39、管理标签(自动管理+手工管理)40、管理Bucket(创建+删除+回滚)
### 使用 Python 结合 SparkHive 的数据分析方法 通过 PySpark,可以实现 Python 与 Apache Spark 的无缝集成。PySpark 提供了一个用于分布式计算的强大框架,能够高效处理大规模数据集。当结合 Hive 时,可以通过 Spark SQL 访问存储在 Hive 中的数据并对其进行查询和分析。 以下是具体的方法: #### 1. 配置环境 为了使 Python 能够与 SparkHive 协同工作,需确保以下条件满足: - 安装好 Hadoop 并配置集群。 - 在第一台机器的 `hadoop-2.5.0-cdh5.3.6/` 目录下初始化 NameNode 文件系统[^3]。 - 下载并安装 Spark,并设置 SPARK_HOME 环境变量。 - 同时需要下载 PySpark 库并通过 pip 或 conda 安装到本地环境中。 #### 2. 创建 SparkSession 对象 要访问 Hive 表中的数据,首先需要创建一个支持 Hive 功能的 SparkSession 实例。这一步骤允许 Spark SQL 查询直接操作 Hive 数据库表。 ```python from pyspark.sql import SparkSession spark = SparkSession.builder \ .appName("Python with Spark and Hive") \ .enableHiveSupport() \ .getOrCreate() ``` 上述代码片段展示了如何构建带有 Hive 支持功能的 SparkSession[^2]。 #### 3. 执行 HiveQL 查询语句 一旦建立了 SparkSession,就可以像平常一样运行标准的 HiveQL 命令来读取或者写入数据至 Hive 表中。 ```python df = spark.sql("SELECT * FROM your_hive_table LIMIT 10") df.show() ``` 此部分利用了 Spark SQL 来加载来自 Hive 的结构化数据,并将其转换成 DataFrame 形式以便进一步加工处理。 #### 4. 处理复杂数据类型 对于更复杂的场景,比如涉及嵌套数组或其他高级别的 JSON 文档,则应考虑采用适合这些情况下的特定编码方式。例如,在定义模式时可以选择 ArrayType, MapType 等复合型字段描述符。 #### 5. 将结果保存回 Hive 完成所有必要的变换之后,还可以把最终的结果存回到新的 Hive 表里去。 ```python new_df.write.saveAsTable('your_new_hive_table') ``` 以上步骤说明了怎样借助于 Python 编程语言配合 Spark 工具包来进行基于 Hive 存储的大规模数据挖掘任务。 #### 注意事项 需要注意的是版本兼容性问题;这里假设使用的 Python 版本至少为 3.x ,而 Spark 及其组件也应当保持最新稳定发行版状态以获得最佳性能表现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值