如何将数据从Cassandra导出到BigQuery
我有Apache Cassandra在Google Cloud中的4个虚拟机上工作。我认为它太昂贵了,并且想要将所有数据导出到BigQuery。卡桑德拉大约有2TB(60毫米排)。任何建议我怎么能做到这一点?如何将数据从Cassandra导出到BigQuery
在此先感谢。
我们决定将5年的数据从Apache Cassandra迁移到Google BigQuery。问题不仅仅是传输数据或导出/导入,问题在于非常古老的Cassandra!
经过广泛研究后,我们计划迁移到将数据导出到csv,然后在Google云端存储中上传以导入Big Query。
痛苦是卡桑德拉1.1处理大量记录的方式!没有分页,所以在某些时候你会用完东西!如果没有错,从2.2版开始引入分页。
毕竟我试图升级到最新版本3.4失败,我决定尝试其他版本,幸运的是版本2.2工作!通过工作,我的意思是我能够按照升级步骤结束并且可以访问数据。
因为我无法获得直接升级的任何支持,而且我的升级到2.2的尝试也失败了。所以我别无选择,只能升级到2.0,然后升级到2.2。因为这是非常微妙的任务,我只是把你转到官方网站,然后给你总结。请确保您检查docs.datastax.com并按照说明操作。
举一个概述,你会做下列步骤操作:
- 确保所有节点都是稳定的,没有死的节点。
- 进行备份(您的SSTables,配置等)
-
在继续下一步之前成功升级SSTable是非常重要的。只需使用
nodetool upgradesstables
-
使用
nodetool排排出节点
然后简单地停止节点
- 安装新版本(我将解释全新安装后在此文档)
- 只需将配置作为您的旧Cassandra,启动它并再次升级稳定器(如步骤3)为每个节点。 安装卡桑德拉:
编辑/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云端存储:
gsutil rsync /backup gs://bucket
稍后,您可以使用Google API将csv文件导入Google BigQuery。您可以在cloud.google.com上查看Google文档。
谢谢你的回答。但COPY命令给我平均。速度约为每秒15000行。所以我可以在大约40天内输出60毫秒的行数。我可以加快这个过程吗? –
尝试调整其他参数:https://www.datastax.com/dev/blog/six-parameters-affecting-cqlsh-copy-from-performance – Pentium10
您也可以通过使用Apache Beam创建数据管道并通过Cloud Dataflow运行此管道来完成此任务。
梁包括built-in IO connectors为Apache Cassandra的和谷歌的BigQuery
利用基于波束方法,你也将有更多的选项来执行,你可能需要申请额外的数据清洗和/或转换部分出口过程。
您有低利率。重要的是,您必须使用投票下方发布答案左侧的勾号标记接受的答案。这会增加你的速度。通过查看这个链接看看它是如何工作的:http://meta.*.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10