首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡桑德拉的execute_concurrent不能正常工作

问卡桑德拉的execute_concurrent不能正常工作
EN

Stack Overflow用户
提问于 2019-01-17 10:17:05
回答 1查看 388关注 0票数 0

我编写了一个Python脚本,它读取csv并使用异步和并发但并发的方式将它们插入Cassandra表中,但并发比异步慢。我使用并发的目的是实现并行写入,因此,加快在cassandra中索引csv文件的任务。

使用异步的代码:

代码语言:javascript
复制
for df in chunks:
            futures = []
            df = df.to_dict(orient='records')
            chunk_counter += 1
            for row in df:
                key = str(row["0"])
                row = json.dumps(row, default=str)
                futures.append(
                    self.session.execute_async(
                        insert_sql, [key, "version_1", row]
                    )
                )
                # batch.add(insert_sql, (key, "version_1", row))
            # self.session.execute(batch)
            for future in futures:
                self.log.debug(future)
                continue

使用并发代码:

代码语言:javascript
复制
for df in chunks:
            futures = []
            df = df.to_dict(orient='records')
            chunk_counter += 1
            for row in df:
                key = str(row["0"])
                row = json.dumps(row, default=str)
                params = (key, row, )
                futures.append(
                    (
                        insert_sql,
                        params
                    )
                )
            results = execute_concurrent(
                self.session, futures, raise_on_first_error=False)
            for (success, result) in results:
                if not success:
                    self.handle_error(result)  # result will be an Exception
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-17 10:57:55

您没有设置execute_concurrent的execute_concurrent参数,默认情况下它使用100。

来自文档

并发参数控制并发执行语句的数量。当Cluster.protocol_version设置为1或2时,建议将其保持在每台主机的核心连接数乘以已连接主机数量的100倍以下(参见Cluster.set_core_connections_per_host())。如果超出该数量,则事件循环线程可能试图阻止新连接的创建,从而严重影响吞吐量。如果protocol_version是3或更高版本,则可以安全地尝试使用更高级别的并发性。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54233644

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档