ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Kestra 加载出租车 CSV 到 BigQuery 报 line contains only 14 columns 怎么排查

2026/9/12 16:08:49 拓冰建站 浏览量
Kestra 加载出租车 CSV 到 BigQuery 报 line contains only 14 columns 怎么排查 Kestra 加载出租车 CSV 到 BigQuery 报 line contains only 14 columns 怎么排查【免费下载链接】data-engineering-zoomcampData Engineering Zoomcamp is a free 9-week course on building production-ready data pipelines. Join the course here 项目地址: https://gitcode.com/GitHub_Trending/da/data-engineering-zoomcamp在 Data Engineering Zoomcamp 的 Module 2Workflow Orchestration中用 Kestra 执行08_gcp_taxi流程把 NYC 出租车 CSV 从 GitHub 下载、上传到 GCS 并写入 BigQuery 时执行可能失败并报出形如CSV table references column position 17, but line contains only 14 columns的BigQueryError。课程官方排查文档Troubleshooting tips 章节对此有明确结论这类报错通常不是表 schema 的问题而是 CSV 文件没有完整下载或没有正确上传到 GCS处理方式是把整个 execution 完整重跑一次。以下流程基于课程提供的 GCP 出租车加载流程适用于 Kestra 通过 Docker Compose 在本地运行的环境见 docker-compose.yml。先确认你的报错是否属于这一类报错出现在流程中 BigQuery 外部表读取 GCS 上 CSV 文件的阶段。文档给出的错误示例如下文档示例其中的项目名、bucket 名、行列位置数值仅作对照你的实际值会不同BigQueryError{reasoninvalid, locationnull, messageError while reading table: kestra-sandbox.zooomcamp.yellow_tripdata_2020_01, error message: CSV table references column position 17, but line contains only 14 columns.; line_number: 2103925 byte_offset_to_start_of_line: 194863028 column_index: 17 column_name: congestion_surcharge column_type: NUMERIC File: gs://anna-geller/yellow_tripdata_2020-01.csv}判断依据错误是BigQueryError且包含line contains only 14 columns这类列位置与列数不匹配的描述末尾的File: gs://...指向 GCS 上的 CSV。如果错误文本与上述示例不符则不属于文档给出的这一排查路径。文档对根因的解释课程 Troubleshooting 说明 对这类错误的判定是含义准备写入 BigQuery 的 CSV 文件与 GCS 上的外部源表即 GCS 里的文件之间列数不匹配成因网络/传输问题导致文件没有从 GitHub 完整下载或没有被正确上传到 GCS文件实际是残缺的关键点报错看起来像 schema 问题但实际不是不要去改外部表或目标表的列定义。从 流程定义 看对应关系是extract任务用wget -qO- ... | gunzip file.csv从 GitHub 下载并解压 CSVupload_to_gcs任务把它上传到 GCS随后bq_*_table_ext任务创建指向该 GCS 文件的外部表——外部表读取时列数对不上就是下载或上传环节文件不完整。处理步骤完整重跑 execution文档给出的解决方法是rerun the entire execution即重跑整个执行而不是只重跑失败的 BigQuery 任务。重跑必须覆盖两个环节重新下载 CSVextract任务重新执行wgetgunzip重新上传到 GCSupload_to_gcs任务把新文件覆盖上传到gs://GCP_BUCKET_NAME/file。在 Kestra UI 中直接对该次失败的执行做完整重跑即可让extract和upload_to_gcs都重新执行一次。由于流程中 GCS 目标文件名与本地文件相同taxi_tripdata_year-month.csv重跑会用新下载的文件覆盖 GCS 上的残缺文件。完成后文档给出的预期结果是This should resolve the issue——即整个 execution 跑通、不再报该BigQueryError。文档没有给出额外的行数值校验判定标准就是执行成功通过原先失败的外部表读取环节。仍然失败时按环境层面检查如果重跑后依然失败回到 Module 2 README 的 Troubleshooting tips按课程要求先核对环境Kestra 镜像固定为kestra/kestra:v1.1不要使用kestra/kestra:develop文档说明这是可能包含 bug 的开发版本Postgres 镜像固定为postgres:18如果 8080 端口被pgAdmin或其他服务占用可在docker-compose中把 Kestra 端口映射改为 18080并从 http://localhost:18080/ 访问 UI。若以上都不解决文档给出的下一步是停止并删除现有的 Kestra Postgres 容器再用docker-compose up -d重新启动。注意这一步会删除并重建容器docker-compose里 Kestra 的数据存放在命名卷中卷本身不会随容器删除而清除但操作前请确认你对docker-compose down的副作用有预期。仍然无解时文档建议把问题发到 DataTalksClub Slack 或 Kestra 的 Slack 社区提问。边界说明文档只针对line contains only 14 columns这一类文件未完整下载/上传场景给出上述结论如果错误文本明显不同例如真正的 schema 类型错误、权限错误不适用本文路径。文档没有给出对 GCS 文件大小或行数的独立校验命令排查手段就是完整重跑执行并观察是否仍报错不要自行增加数值校验作为失败判定。本文内容来自 GCP 加载 BigQuery 课程页、流程定义 与 Module 2 Troubleshooting 章节。【免费下载链接】data-engineering-zoomcampData Engineering Zoomcamp is a free 9-week course on building production-ready data pipelines. Join the course here 项目地址: https://gitcode.com/GitHub_Trending/da/data-engineering-zoomcamp创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考