Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法使用Python导出Cassandra表_Python_Cassandra_Export_Cql_Cqlsh - Fatal编程技术网

无法使用Python导出Cassandra表

无法使用Python导出Cassandra表,python,cassandra,export,cql,cqlsh,Python,Cassandra,Export,Cql,Cqlsh,我正在尝试使用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' sess

我正在尝试使用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"

请在这方面帮助我。

这不适用于您,因为副本不是CQL的一部分

“复制”是仅用于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:

使用Python将Cassandra表导出为CSV格式

本质上。。。如何导出整个Cassandra表

我经常被问到这个问题。简单的答案是…不要

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

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

一句话:Cassandra不是一个关系数据库,那么为什么要将其视为一个关系数据库呢

也就是说,有一些工具被设计用来处理这样的事情;作为他们中的一员

请帮助我使用session.execute语句执行查询

如果您坚持使用Python,那么您需要做一些事情。对于一张大桌子,你会想要。您还需要在小批量/页面中执行此操作,这样您就不会翻转协调器节点。但是为了防止你重新发明轮子,我要告诉你,已经有一个用Python编写的工具可以做到这一点:

事实上,PAGESIZE和PAGETIMEOUT的特性允许它避免在大型数据集上超时。我以前使用新的cqlsh成功导出了3.7亿行,所以我知道这是可以做到的


小结:不要重新发明轮子。编写一个使用cqlsh COPY的脚本,并利用我刚才提到的所有内容。

谢谢Aaron。对不起,我不能执行。事实上,我在卡桑德拉是新来的。请帮助我使用session.execute语句执行查询。我没有使用任何用户名和密码。谢谢@Aaron。我试试看。