google-cloud-platform - Google Cloud Dataflow(文本文件到 Cloud Spanner)java.lang.RuntimeException:parseRow 出错。行:CSVRecord
问题描述
我正在运行云数据流作业以将多个文本文件 (.csv) 从 GCS 导入云扳手。
该作业正在部分工作,导入了 10 亿行中的大约 600 万行,但随后该作业因以下错误而失败:
Error message from worker: java.lang.RuntimeException: org.apache.beam.sdk.util.UserCodeException: java.lang.RuntimeException: Error to parseRow. row: CSVRecord [comment='null', recordNumber=1, values=[source_set_id_hash, rank, run_id, source_set_id, recommended_set_id, score, updated_at, version]], table: CREATE TABLE `set_recs_similar_content` (
`source_set_id_hash` STRING(MAX) NOT NULL,
`version` STRING(MAX) NOT NULL,
`rank` INT64 NOT NULL,
`recommended_set_id` INT64 NOT NULL,
`run_id` STRING(MAX) NOT NULL,
`score` FLOAT64 NOT NULL,
`source_set_id` INT64 NOT NULL,
`updated_at` TIMESTAMP NOT NULL,
) PRIMARY KEY (`source_set_id_hash` ASC, `version` ASC, `rank` ASC)
这是因为它正在读取 CSV 的第一行并期望它与格式匹配吗?
我的 manifest.json 文件中的相关部分如下:
"columns": [
{"column_name": "source_set_id_hash", "type_name": "STRING"},
{"column_name": "rank", "type_name": "INT64"},
{"column_name": "run_id", "type_name": "STRING"},
{"column_name": "source_set_id", "type_name": "INT64"},
{"column_name": "recommended_set_id", "type_name": "INT64"},
{"column_name": "score", "type_name": "FLOAT64"},
{"column_name": "updated_at", "type_name": "TIMESTAMP"},
{"column_name": "version", "type_name": "STRING"}
]
GCS 中的所有文件都采用相同的格式,因此 6% 的工作会完成但随后失败似乎很奇怪。
相关文档链接:https ://cloud.google.com/dataflow/docs/guides/templates/provided-batch#gcstexttocloudspanner
谢谢
解决方案
事实证明,标题不应出现在您的 CSV 文件中。
从模板源文件:
* <p>Text file must NOT have a header.
请从所有文件中删除标题后重试。错误消息的下一行表明第一行是标题:
recordNumber=1, values=[source_set_id_hash, rank, run_id, source_set_id, recommended_set_id, score, updated_at, version]
推荐阅读
- r - 根据 R 中的另一个数据框替换一列中的值
- c# - 有没有办法在字典内容上使用 .ForEach ?
- python - 如何初始化从python类中的其他属性计算的属性
- linux - 获取准确的 ELF 依赖项
- database - sqlalchemy 中的类型错误
- apache-kafka - 如何将数据从 Kafka 导出到 Prometheus?
- django - 编写 Django 代码时,我不断收到此错误:'WSGIRequest' 对象没有属性'profile'
- vue.js - 在模板部分中包含变量的图像路径
- ag-grid - 显示弹出类型的单元格渲染器
- python - TypeError:“播放器”对象不可调用 Django