云Spanner文档说Spanner可以导出/导入Avro格式。此路径是否也可用于批量摄取从其他来源生成的Avro数据?文档似乎表明它只能导入也是由扳手生成的Avro数据。
我运行了一个快速导出作业,并查看了生成的文件。清单和模式看起来非常简单。我想我应该在这里发帖,以防这个兔子洞很深。
清单文件
‘
{
"files": [{
"name": "people.avro-00000-of-00001",
"md5": "HsMZeZFnKd06MVkmiG42Ag=="
}]
}架构文件
{
"tables": [{
"name": "people",
"manifestFile": "people-manifest.json"
}]
}数据文件
{"type":"record",
"name":"people",
"namespace":
"spannerexport","
fields":[
{"name":"fullName",
"type":["null","string"],
"sqlType":"STRING(MAX)"},{"name":"memberId",
"type":"long",
"sqlType":"INT64"}
],
"googleStorage":"CloudSpanner",
"spannerPrimaryKey":"`memberId` ASC",
"spannerParent":"",
"spannerPrimaryKey_0":"`memberId` ASC",
"googleFormatVersion":"1.0.0"} 发布于 2018-08-15 01:14:16
对你的问题的回答是肯定的!有两种方法可以将Avro数据摄入到Cloud Spanner中。
方法1
如果您将Avro文件放置在按照Cloud Spanner导出操作排列的Google Cloud Storage存储桶中,并按照Cloud Spanner期望的格式生成清单,则在Cloud Spanner的web界面中使用导入功能将起作用。显然,这里可能有很多繁琐的格式化工作,这就是为什么the official documentation声明这个“导入过程只支持从云扳手导出的Avro文件”。
方法2
与其使用Cloud Spanner web控制台执行导入/导出作业,并依赖Avro清单和数据文件进行完美格式化,不如稍微修改Google Cloud Platform用户下GitHub上两个公共代码存储库中的代码,这两个公共代码仓库提供导入/导出(或备份/恢复或导出/摄取)功能,用于将数据从Avro格式移动到Google Cloud Spanner:(1) Dataflow Templates,特别是this file (2) Pontem,特别是this file。
这两个工具都编写了数据流作业,允许您使用Avro格式将数据移入和移出Cloud Spanner。每种方法都有特定的方法来解析输入的Avro模式(即,将数据从Avro移动到Cloud Spanner)。由于您的用例是输入的(即,将数据注入Avro格式的Cloud Spanner ),因此您需要修改Avro解析代码以适合您的特定模式,然后在您的机器上本地从命令行执行Cloud Dataflow作业(该作业随后被上传到Google Cloud Platform)。
如果您不熟悉Cloud Dataflow,那么它是一个用于定义和运行大数据集作业的工具。
https://stackoverflow.com/questions/51844144
复制相似问题