gpt4 book ai didi

python - 无法使用 Python 导出 Cassandra 表

转载 作者:行者123 更新时间:2023-11-28 22:31:39 25 4
gpt4 key购买 nike

我正在尝试使用 Python 将 Cassandra 表导出为 CSV 格式。但我做不到。但是,我能够从 Python 执行“select”语句。我使用了以下代码:

from cassandra.cluster import Cluster
cluster = Cluster ()
session = cluster.connect('chandan') ### 'chandan' is the name of the keyspace
## name of the table is 'emp'
session.execute(""" copy emp (id,name) to 'E:\HANA\emp.csv' with HEADER = true """ )
print "Exported to the CSV file"

请在这方面帮助我。

最佳答案

这对您不起作用,因为 COPY 不是 CQL 的一部分。

COPY 是一个仅限 cqlsh 的工具。

您可以使用 -e 标志通过命令行或脚本调用它:

cqlsh 127.0.0.1 -u username -p password -e "copy chandan.emp (id,name) to 'E:\HANA\emp.csv' with HEADER = true"

编辑 20170106:

export Cassandra table to CSV format using Python

本质上...如何导出整个 Cassandra 表?

我经常被问到这个问题。简短的回答...是不要

Cassandra 最适合用于存储数百万甚至数十亿行。它可以做到这一点,因为它将负载(操作和大小)分布在多个节点上。它不擅长的是删除、就地更新和未绑定(bind)查询。我告诉人们不要做完全导出(未绑定(bind)查询)之类的事情有几个原因。

首先,在分布式环境中对大表运行非绑定(bind)查询通常是非常的坏主意(在您的查询中引入大量网络时间和流量)。其次,您正在获取存储在多个节点上的大型结果集,并将所有这些数据压缩到一个文件中……可能也不是一个好主意。

底线:Cassandra 不是关系数据库,那么您为什么要把它当作关系数据库?

话虽这么说,但还是有专门用来处理此类事情的工具; Apache Spark成为他们中的一员。

Please help me to execute the query with session.execute() statement.

如果您坚持使用 Python,那么您需要做一些事情。对于大表,您需要 query by token range .您还希望以小批量/小页面的形式执行此操作,这样您就不会翻倒协调器节点。但是为了防止您重新发明轮子,我会告诉您已经有一个工具(用 Python 编写)可以做到这一点:cqlsh COPY

事实上newer versions of cqlsh COPY具有允许它避免在大型数据集上超时的功能(PAGESIZE 和 PAGETIMEOUT)。我以前使用新的 cqlsh 成功导出了 3.7 亿行,所以我知道它可以做到。

总结:不要重新发明轮子。编写一个使用 cqlsh COPY 的脚本,并利用我刚才谈到的所有这些东西。

关于python - 无法使用 Python 导出 Cassandra 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41481748/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com