【发布时间】:2018-03-30 13:44:15
【问题描述】:
我让 Apache Cassandra 在 Google Cloud 中的 4 个虚拟机上工作。我认为它太贵了,想将所有数据导出到 BigQuery。 Cassandra 中有大约 2 TB(60 兆行)。有什么建议我该怎么做?
提前致谢。
【问题讨论】:
标签: apache-spark cassandra pyspark google-bigquery google-cloud-platform
我让 Apache Cassandra 在 Google Cloud 中的 4 个虚拟机上工作。我认为它太贵了,想将所有数据导出到 BigQuery。 Cassandra 中有大约 2 TB(60 兆行)。有什么建议我该怎么做?
提前致谢。
【问题讨论】:
标签: apache-spark cassandra pyspark google-bigquery google-cloud-platform
我们决定将 5 年的数据从 Apache Cassandra 转移到 Google BigQuery。问题不只是传输数据或导出/导入,问题在于非常旧的 Cassandra!
经过广泛研究,我们计划将数据导出为 csv,然后上传到 Google Cloud Storage 以在 Big Query 中导入。
Cassandra 1.1 处理大量记录的方式很痛苦!没有分页,所以在某些时候你会用完一些东西!如果没记错的话,分页是从 2.2 版本开始引入的。
在我升级到最新版本 3.4 的所有尝试都失败后,我决定尝试其他版本,幸运的是 2.2 版成功了!通过工作,我的意思是我能够按照升级步骤结束并且可以访问数据。
因为我无法获得对直接升级的任何支持,并且我尝试简单地升级到 2.2 也失败了。所以只好先升级到2.0再升级到2.2。因为这是一个非常微妙的任务,所以我宁愿把你转发到官方网站,然后再给你总结。请务必查看 docs.datastax.com 并按照他们的说明进行操作。
为了提供概述,您将执行以下步骤:
在继续下一步之前成功升级您的 SSTable 非常重要。只需使用
nodetool 升级stables
排干节点使用
节点工具排水
然后简单地停止节点
编辑 /etc/yum.repos.d/datastax.repo
[datastax]
name = DataStax Repo for Apache Cassandra
baseurl = https://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
然后安装并启动服务:
yum install dsc20
service cassandra start
升级到 Cassandra 2+ 后,您可以将数据导出到 csv,而不会出现分页或崩溃问题。
仅作记录,获取有关数据结构的必要信息的几个命令如下:
cqlsh -u username -p password
describe tables;
describe table abcd;
describe schema;
一旦我们知道要导出的表,我们就可以将它们与键空间一起使用。首先将所有命令添加到一个文件中以创建批处理。
vi commands.list
例如导出一个表的示例命令:
COPY keyspace.tablename TO '/backup/export.csv';
最后从文件中运行命令:
cqlsh -u username -p password -f /backup/commands.list
至此,您已将表格导出为 csv 文件。您现在需要做的就是将文件上传到 Google Cloud Storage:
gsutil rsync /backup gs://bucket
稍后您可以使用 Google API 将 csv 文件导入 Google BigQuery。您可以在 cloud.google.com 中查看 Google 文档
【讨论】:
您还可以通过使用 Apache Beam 创建数据管道并通过 Cloud Dataflow 运行此管道来完成此任务。
Beam 包括用于 Apache Cassandra 和 Google BigQuery 的 built-in IO connectors
使用基于 Beam 的方法,您还可以使用其他选项来执行您可能希望在导出过程中应用的其他数据清理和/或转换。
【讨论】: