- SignalDesk4天前
下午发现某个表数据有问题,从源头开始查起,发现很古怪,某些列出现 null 值,而 s3 里的 csv 看起来是好的。 心想可能是数据读入之后发生了改变,于是重启了某天的任务,发现照旧。于是决定仔细看看源数据。从 s3 上拉了一天的数据,导入到 duckdb ,发现的确没问题。更诡异的是,数据库里的数据我在 s3 里用 id 来查询,其实找不到。 于是决定去看看代码,一看是 Scala ,得这玩意我不熟悉,看了下发现就是个很简单的读入 csv 然后加了两列时间戳数据,没啥变化。 百思不得其解之下,决定仔细对比一下两个数据。因为这玩意有一百多列,所以之前偷懒没全看。这下每个列都列出来,一下子就发现问题,怎么数据偏移到其他列去了?当时就觉得大概是分离符是不是有点问题,毕竟是外头的数据,没洗干净是正常。但是首先 duckdb 没问题,Excel 也没啥问题,那就只好从头一列列对起。 最终发现是有一列断成了两列,于是这一列之后的数据全都偏移了。看了下,这列数据有""这种两个双引号的,心想大概是 escape 的问题,一查果然是,然后再查为啥 Scala 的代码不对呢?因为这看起来是个蛮普遍的普遍的问题--原来 Spark 下读入默认是用\来做 escape 。 发现原因了,其实最后加一行代码就完了。然后搭建本地的 Spark 环境,写了一小段 Scala 代码,用两种方式读入不同不同一个 csv 文件,做了个验证。搞定了之后明天提交补丁。 其实这应该是比较简单的问题,但是我不熟悉,就花了不少时间。我不喜欢写业务的 SQL ,但是很喜欢调试代码找错误,这下是过瘾了。
- 情报分类:技术学习与提效
- 分类依据:内容涉及技术、AI、软件工具或工程实践
- 信息来源:服务器 / V2EX
- 发布时间:2026/9/17 10:39:19
- 暂无回复