4

我有Apache Cassandra在Google Cloud中的4個虛擬機上工作。我認爲它太昂貴了,並且想要將所有數據導出到BigQuery。卡桑德拉大約有2TB(60毫米排)。任何建議我怎麼能做到這一點?如何將數據從Cassandra導出到BigQuery

在此先感謝。

+0

您有低利率。重要的是,您必須使用投票下方發佈答案左側的勾號標記接受的答案。這會增加你的速度。通過查看這個鏈接看看它是如何工作的:http://meta.stackoverflow.com/questions/5234/how-does-accepting-an-answer-work#5235 – Pentium10

回答

7

我們決定將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並按照說明操作。

舉一個概述,你會做下列步驟操作:

  1. 確保所有節點都是穩定的,沒有死的節點。
  2. 進行備份(您的SSTables,配置等)
  3. 在繼續下一步之前成功升級SSTable是非常重要的。只需使用

    nodetool upgradesstables

  4. 使用

    nodetool排排出節點

  5. 然後簡單地停止節點

  6. 安裝新版本(我將解釋全新安裝後在此文檔)
  7. 只需將配置作爲您的舊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文檔。

+0

謝謝你的回答。但COPY命令給我平均。速度約爲每秒15000行。所以我可以在大約40天內輸出60毫秒的行數。我可以加快這個過程嗎? –

+0

嘗試調整其他參數:https://www.datastax.com/dev/blog/six-parameters-affecting-cqlsh-copy-from-performance – Pentium10

3

您也可以通過使用Apache Beam創建數據管道並通過Cloud Dataflow運行此管道來完成此任務。

梁包括built-in IO connectors爲Apache Cassandra的和谷歌的BigQuery

CassandraIO (Java)

利用基於波束方法,你也將有更多的選項來執行,你可能需要申請額外的數據清洗和/或轉換部分出口過程。

相關問題