spark 执行 hive sql数据丢失

spark-sql 丢失数据

1.通过spark执行hive sql 的时候,发现 hive 四条数据,spark 执行结果只有两条数据

目标对应的两条数据丢失

select date, user_id, pay from dim.isr_pay_failed where user_id = '*******'

hive-sql 结果:

| date | user_id | pay |

| 20250425| d34342343* | 7 |

| 20250425| d34342344* | 7 |

| 202504525| d34342345* | 7 |

| 202504524| d34342346* | 7 |

spark-sql 结果

| 202504525| d34342345* | 7 |

| 202504524| d34342346* | 7 |

原因

表结构很总 user_id 为 CHAR 类型:

CHAR 类型数据在spark 和 hive 中存在如下差异:

Hive 类型 Spark SQL 类型 关键差异与注意事项

CHAR 不足补空格。建议通过 TRIM() 或改用 VARCHAR 避免填充问题。

TIMESTAMP TimestampType 时区敏感:Hive 默认使用服务器时区,Spark 需通过 spark.sql.session.timeZone

统一配置。

解决方式

select date, user_id, pay from dim.isr_pay_failed where triim(user_id) = '*******';

问题解决

相关推荐
Kay_Liang8 小时前
MySQL SQL语句精要:DDL、DML与DCL的深度探究
开发语言·数据库·sql·mysql·database
float_六七10 小时前
SQL预编译:安全高效数据库操作的关键
数据库·sql·安全
写代码也要符合基本法11 小时前
Oracle SQL - 使用行转列PIVOT减少表重复扫描(实例)
数据库·sql·oracle
写不出来就跑路16 小时前
openGauss数据库管理实战指南——基本常用操作总结
数据库·sql·gaussdb
༺水墨石༻16 小时前
低版本hive(1.2.1)UDF实现清除历史分区数据
数据仓库·hive·hadoop
The_cute_cat17 小时前
SQL的初步学习(二)(以MySQL为例)
sql·学习·mysql
~ 小团子1 天前
每日一SQL 【各赛事的用户注册率】
数据库·sql
小袁拒绝摆烂1 天前
SQL开窗函数
android·sql·性能优化
~ 小团子1 天前
每日一SQL 【每月交易 I】
数据库·sql