如何将数据从Cassandra导出到BigQuery

Ale*_*nko 5 cassandra google-bigquery apache-spark google-cloud-platform pyspark

我让Apache Cassandra在Google Cloud中使用4个虚拟机.我认为它太贵了,想要将所有数据导出到BigQuery.Cassandra大约有2 TB(60毫米行).有什么建议我该怎么办?

提前致谢.

Pen*_*m10 8

我们决定将Apache Cassandra的5年数据移至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并按照他们的说明操作.

要概述,您将执行以下步骤:

  1. 确保所有节点都稳定且没有死节点.
  2. 进行备份(您的SSTable,配置等)
  3. 在继续下一步之前成功升级SSTable非常重要.简单地使用

    nodetool升级稳定

  4. 使用排空节点

    nodetool drain

  5. 然后只需停止节点

  6. 安装新版本(我将在本文档后面解释全新安装)
  7. 只需将配置作为旧的Cassandra,然后再启动它并为每个节点再次升级(如步骤3).安装Cassandra:

编辑/etc/yum.repos.d/datastax.repo

[datastax]
name = DataStax Repo for Apache Cassandra
baseurl = https://rpm.datastax.com/community
enabled = 1
gpgcheck = 0
Run Code Online (Sandbox Code Playgroud)

然后安装并启动服务:

yum install dsc20
service cassandra start
Run Code Online (Sandbox Code Playgroud)

升级到Cassandra 2+后,您可以将数据导出到csv而不会出现分页或崩溃问题.

只是为了记录,一些命令来获取有关数据结构的必要信息如下:

cqlsh -u username -p password
describe tables;
describe table abcd;
describe schema;
Run Code Online (Sandbox Code Playgroud)

一旦我们知道要导出的表格,我们只需将它们与键空间一起使用.首先将所有命令添加到一个文件中以创建批处理.

vi commands.list
Run Code Online (Sandbox Code Playgroud)

例如,导出一个表的示例命令:

COPY keyspace.tablename TO '/backup/export.csv';
Run Code Online (Sandbox Code Playgroud)

最后运行文件中的命令:

cqlsh -u username -p password -f /backup/commands.list
Run Code Online (Sandbox Code Playgroud)

所以到目前为止,您已将表导出到csv文件.您现在需要做的就是将文件上传到Google云端存储:

gsutil rsync /backup gs://bucket
Run Code Online (Sandbox Code Playgroud)

稍后,您可以使用Google API将csv文件导入Google BigQuery.您可以在cloud.google.com中查看Google文档