在C#中将数据导入Cassandra Cluster的最佳方法

107

我在SQL Server中有数十亿行数据。我们现在将改用Cassandra作为数据仓库来执行分析工作。SQL Server将充当OLTP,而Cassandra将充当OLAP。数据导入cassandra是通过datastax c#驱动程序执行的。我一直在尝试通过datastax c#驱动程序插入cassandra的各种方法。插入大量数据的最佳方法是什么?
我创建了各种PCO(普通cassandra对象),它们映射到Cassandra Column系列。列族有30多个列。

[Table("CF_Data")]
internal class CF_Data
{
    [PartitionKey]
    public Guid Date{ get; set; }
    public DateTimeOffset Name { get; set; }
    .................
}

第一种方法:我正在创建上述类的实例并将其绑定到批处理语句。最后执行每1000行的批处理。

 var batch  =session.CreateBatch();;
        foreach (cf_Data val in lsData)
        {
            try
            {
                if (((count) % 1000) == 1)
                {
                   batch = session.CreateBatch();
                }
                batch.Append(table.Insert(val)); 
                if (count % 1000 == 0)
                {
                    batch.Execute();   
                }
            }
            catch (Exception)
            {
                throw;
            }
            count++;
        }

第二种方法:每行通过Mapper插入数据。

        try
        {
            IMapper mapper = new Mapper(session);
            foreach (CF_Data val in listData)
            {
                try
                {
                    mapper.Insert(val);
                }
                catch (Exception)
                {
                    //throw;
                }
            }
        }
        catch (Exception)
        {
            throw;
        }

我还通过绑定CF_Data实例的每个属性,通过带有BatchStatement的PreparedStatement插入了数据,但是如何将CF_Data的实例(要插入的一行)绑定到PreparedStatement。

PreparedStatement ps = session.Prepare(@"INSERT INTO CF_Data
                (
                    Date,
                    Name, ....
                ) " +
                "VALUES (now(),?, ?, ?, ?,?,?,?,?,?,?,?,?,?,?,?,?)");

最好的网络拓扑(replication_factor,snitch等)具有最佳性能并具有足够多的数据副本,以避免单点故障?现在,我已经使用了simplestrategy&Replication_factor of3。如何像Cassandra团队所说的那样快速读取内容?

惠比

您最好不要使用Insert(***)进行大量数据迁移,cassandra提供“从**复制**”以从csv导入数据,这可能会导致超过6 M的数据记录超时,更好的方法是@jorgebg说的是sstableloader来加载海量数据,这肯定会满足您的需求。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

TOP 榜单

热门标签

归档