日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

BulkLoad數據導入

準備工作

該工具通過文件流接口快速導入數據到Cassandra集群,是最快地將線下數據遷移到線上Cassandra集群方法之一,準備工作如下:

  • 線上Cassandra集群

  • 線下數據,SSTable格式或者csv格式。

  • 同VPC準備一臺獨立的ECS,開放安全組,確保能訪問Cassandra集群

1. 準備同VPC下客戶端ECS

建議獨立的ECS,不要和線上Cassandra集群混用,混用會影響線上服務。

2. 創建schema

$ cqlsh -f schema.cql  -u USERNAME -p PASSWORD [host]
                        

3. 準備數據

3.1 SSTable數據格式

按data/${keyspace}/${table} 格式組織目錄,將SSTable數據放入目錄,如下示例

ls /tmp/quote/historical_prices/
md-1-big-CompressionInfo.db md-1-big-Data.db        md-1-big-Digest.crc32       md-1-big-Filter.db      md-1-big-Index.db       md-1-big-Statistics.db      md-1-big-Summary.db     md-1-big-TOC.txt
                        

上述示例中keyspace為quota,table為historical_prices

導入數據

執行sstableloader,在Cassandra發行包bin目錄下,指定數據目錄 data/${ks}/${table}

${cassandra_home}/bin/sstableloader -d <ip address of the node> data/${ks}/${table}
                        

靜候SSTable數據導入成功,使用cqlsh檢查 bin/cqlsh -u USERNAME -p PASSWORD [host]

$ bin/cqlsh 
cqlsh> select * from quote.historical_prices;
?
 ticker | date                            | adj_close | close     | high      | low       | open      | volume
--------+---------------------------------+-----------+-----------+-----------+-----------+-----------+--------
   ORCL | 2019-10-29 16:00:00.000000+0000 | 26.160000 | 26.160000 | 26.809999 | 25.629999 | 26.600000 | 181000
   ORCL | 2019-10-28 16:00:00.000000+0000 | 26.559999 | 26.559999 | 26.700001 | 22.600000 | 22.900000 | 555000
                        

3.2 csv數據格式

csv格式數據需要先將csv數據轉成SSTable格式,Cassandra給我們提供了CQLSSTableWriter工具,用于生成SSTable,通過它可以將任意格式數據轉化成SSTable格式。 因為csv格式也是需要自己預先組織,所以需要自己編寫csv格式解析代碼,然后編譯執行。 該工具使用示例代碼如下,完整工具參考git repo

        // Prepare SSTable writer
        CQLSSTableWriter.Builder builder = CQLSSTableWriter.builder();
        // set output directory
        builder.inDirectory(outputDir)
               // set target schema
               .forTable(SCHEMA)
               // set CQL statement to put data
               .using(INSERT_STMT)
               // set partitioner if needed
               // default is Murmur3Partitioner so set if you use different one.
               .withPartitioner(new Murmur3Partitioner());
        CQLSSTableWriter writer = builder.build();
        //TODO: 讀取csv文件,迭代讀取每一行
        while ((line = csvReader.read()) != null)
                {
                    writer.addRow(ticker,
                                  DATE_FORMAT.parse(line.get(0)),
                                  new BigDecimal(line.get(1)),
                                  new BigDecimal(line.get(2)),
                                  new BigDecimal(line.get(3)),
                                  new BigDecimal(line.get(4)),
                                  Long.parseLong(line.get(6)),
                                  new BigDecimal(line.get(5)));
                }
                writer.close();
                        

執行自定義程序生成SSTable格式數據后,照3.1 章節導入數據。