【问题标题】:How to export data from Cassandra to BigQuery如何将数据从 Cassandra 导出到 BigQuery
【发布时间】: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


    【解决方案1】:

    我们决定将 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 并按照他们的说明进行操作。

    为了提供概述,您将执行以下步骤:

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

      nodetool 升级stables

    4. 排干节点使用

      节点工具排水

    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
    

    然后安装并启动服务:

    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 文档

    【讨论】:

    • 感谢您的回答。但是 COPY 命令给了我平均值。速度约为每秒 15000 行。所以我可以在大约 40 天内导出 60 兆行。我可以加快这个过程吗?
    • 尝试调整附加参数:datastax.com/dev/blog/…
    【解决方案2】:

    您还可以通过使用 Apache Beam 创建数据管道并通过 Cloud Dataflow 运行此管道来完成此任务。

    Beam 包括用于 Apache Cassandra 和 Google BigQuery 的 built-in IO connectors

    CassandraIO (Java)

    使用基于 Beam 的方法,您还可以使用其他选项来执行您可能希望在导出过程中应用的其他数据清理和/或转换。

    【讨论】:

      猜你喜欢
      • 2014-05-30
      • 1970-01-01
      • 2016-07-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多