当前位置: 首页 > 知识库问答 >
问题:

从Cassandra到C#加载宽行的最快方法是什么?

顾乐心
2023-03-14

将单个(或几个)宽行从Cassandra加载到C#的最高效的性能方法是什么?我的宽行有10.000-10.000列。主键由几个值组成,但是列键是一个字符串,列值是一个计数器(请参见下面的模式)。

CREATE TABLE real_time.grouped_feature_support (
    algorithm_id int,
    group_by_feature_id int,
    select_feature_id int,
    group_by_feature_value text,
    select_feature_value text,
    support counter,
    PRIMARY KEY ((algorithm_id, group_by_feature_id, select_feature_id, group_by_feature_value), select_feature_value)
var table = session.GetTable<GroupedFeatureSupportDataEntry>();
var query = table.Where(x => x.CustomerAlgorithmId == customerAlgorithmId
    && x.GroupByFeatureId == groupedFeatureId
    && myGroupedFeatureValues.Contains(x.GroupByFeatureValue)
    && x.GroupByFeatureValue == groupedFeatureValue
    && x.SelectFeatureId == selectFeatureId)
    .Select(x => new
    {
        x.GroupByFeatureValue,
        x.SelectFeatureValue,
        x.Support,
    })
    .Take(1000000);
var result = query.Execute();

共有1个答案

胥博文
2023-03-14

如果您希望在检索大型结果集时获得最佳性能,那么就不应该使用Linq-to-cql之类的映射组件。

您可以使用驱动程序自述文件中记录的技术检索行,在您的情况下,它类似于:

var query = "SELECT * from grouped_feature_support WHERE" + 
            " algorithm_id = ? AND group_by_feature_id = ? " +
            " AND select_feature_id = ? AND group_by_feature_value = ?";
//Prepare the query once in your application lifetime
var ps = session.Prepare(query);
//Reuse the prepared statement by binding different parameters to it
var rs = session.Execute(ps.Bind(parameters));
foreach (var row in rs)
{
  //The enumerator will yield all the rows from Cassandra
  //Retrieving them in the back in blocks of 5000 (determined by the pagesize).
}
//You can also use a IEnumerable<T> Linq Extensions to filter
var filteredRows = rs.Where(r => r.GetValue<long>("support") > 2);
 类似资料:
  • 问题内容: 我有一个很大的数据集,我必须将其转换为.csv格式,我有29列和超过一百万行。我正在使用python和pandas数据框来处理此工作。我认为,随着数据框变大,将任何行追加到它会越来越耗时。我想知道是否有更快的方法,可以共享代码中的相关代码段。 任何建议,但欢迎。 问题答案: 正如Mohit Motwani建议的最快方法是将数据收集到字典中,然后将所有内容加载到数据帧中。下面是一些速度测

  • 我已经使用objectstream和fileoutputstream将HashMap序列化为一个文件。这是一个非常庞大的HashMap,大约有1.5亿条条目。当我从文件中读回它时,加载它需要很长时间(~40分钟)。 我使用FileOutputStream后跟ObjectOutputStream来序列化对象。然后,我使用ObjectInputStream和FileInputStream读取对象。 有

  • 问题内容: 我有一个纯文本文件,其中可能包含数百万行,需要自定义解析,我想将其尽快加载到HBase表中(使用Hadoop或HBase Java客户端)。 我当前的解决方案基于没有Reduce部件的 MapReduce 作业。我用来读取文本文件,以便每一行都传递给类的方法。此时,将对行进行解析以形成一个对象,该对象将写入。然后,获取对象并将其插入到表中。 该解决方案产生的平均插入率为每秒1,000行

  • 问题内容: 将包含JSON的文件加载到JSONObject的最简单方法是什么。 目前,我正在使用json-lib。 这是我所拥有的,但是会引发异常: 输出为: 问题答案: 试试这个: 这是您的sample-json.txt,应为json格式

  • 问题内容: 我正在阅读一堆用空格或换行符与标准隔开的整数。 用Java有没有更快的方法呢? 问题答案: 用Java有没有更快的方法呢? 是。扫描仪相当慢(至少根据我的经验)。 如果您不需要验证输入,建议您将流包装在BufferedInputStream中,并使用类似/的内容。 比较一下: 使用此代码读取 17兆字节 (4233600个数字) 我的机器花了 3.3秒 。而这个片段 花了 0.7秒 。

  • 本文向大家介绍什么是C#中的方法重载?,包括了什么是C#中的方法重载?的使用技巧和注意事项,需要的朋友参考一下 具有相同名称但参数不同的两个或两个以上方法在C#中称为方法重载。 可以通过更改参数的数量和参数的数据类型来执行C#中的方法重载。 假设您有一个输出数字乘法的函数,那么我们的重载方法将具有相同的名称,但参数数量不同- 以下是显示如何实现方法重载的示例- 示例 输出结果