【发布时间】:2021-01-12 06:00:01
【问题描述】:
我正在运行云数据流作业以将多个文本文件 (.csv) 从 GCS 导入 Cloud Spanner。
作业正在部分工作,导入了 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
谢谢
【问题讨论】:
-
错误消息的“值”部分通常包含值,而不是像
values=[source_set_id_hash, rank这样的列名,所以我认为你的假设是正确的。您的文件中是否引用了列名?
标签: google-cloud-platform google-cloud-dataflow