Cassandra:Python等效于“sstabledump”的方法?

Cassandra:Python等效于“sstabledump”的方法?,python,cassandra,Python,Cassandra,我正在编写一个应用程序来读取cassandra sstable文件(例如mc-1-big-Data.db)。我们不希望使用“sstabledump”命令来执行此操作,这将要求我们在集群中安装cassandra。我们有一个python实用程序,它可以读取.db文件并以json格式输出。据我所知,python中没有与sstabledump等效的工具可以直接访问C*sstables 一些解决方案是利用cqlsh COPY to(csv或txt格式)或dsbulk直接以json格式获取数据 请注意

我正在编写一个应用程序来读取cassandra sstable文件(例如mc-1-big-Data.db)。我们不希望使用“sstabledump”命令来执行此操作,这将要求我们在集群中安装cassandra。我们有一个python实用程序,它可以读取.db文件并以json格式输出。

据我所知,python中没有与sstabledump等效的工具可以直接访问C*sstables

一些解决方案是利用cqlsh COPY to(csv或txt格式)或dsbulk直接以json格式获取数据

请注意,后者(dsbulk)将利用java驱动程序,并通过客户端端口连接以从集群中提取信息,从而在提取过程中对集群造成一定的压力-尽管CQLSH也存在同样的问题

至于使用sstabledump,直接读取sstables不一定是一种推荐的方法,因为它将包括基于复制因子的墓碑和副本,因此在大多数情况下,让引擎解析数据是一个更好的选择(但如果真正的目标是这样做,那么在相关的应用程序集群上安装C*可能是唯一的方法)

编辑: 因此,sstable2json被弃用,因为我看到它是响应中提到的回购协议的一部分,jira解释了其背后的原因

我还没有在repo中测试过该解决方案,但是dsbulk比
复制到
有一个优势,即它利用java驱动程序执行多线程。并且可以用于查询或转储表-请参见下面的示例导出表
ks.kv

$ dsbulk unload -h $(hostname -i) -k ks -t kv --connector.name json --connector.json.url /home/user/export
Operation directory: /home/automaton/logs/UNLOAD_20200114-092515-429006
total | failed | rows/s | p50ms | p99ms | p999ms
    9 |      0 |     30 |  2.94 |  7.50 |   7.50
Operation UNLOAD_20200114-092515-429006 completed successfully in 0 seconds.

恐怕没有现成的解决方案(我知道)对于最新版本上与sstable2json相当的python版本

谢谢您的回复。copy to命令下载批量数据非常慢。复制数据我们可以管理它。我这里有一些代码。但它似乎不起作用,因为它可能需要一些修改。编辑上面的响应以扩展它。希望它有帮助。至于您的假设,我认为这取决于所使用的C*版本和sstables版本(因为dsbulk只适用于C*2.1,但以前的版本应该可以使用您提到的工具,如sstable2json)。很抱歉,如果它不符合您的要求。好的,我将测试此实用程序的性能。因此它与spark性能相当?我不会这么做。spark扩展到多个系统,并以dsbulk无法实现的方式拆分负载。它比COPY好,但它不能替代spark
$ head /home/user/export/output-000001.json 
{"k":5,"v":5}
{"k":1,"v":1}
...