我想将数据从 Cassandra 导出到 Json 文件,因为 Pentaho 不支持我的 Cassandra 3.10 版本
您只需在
json
之后添加 select
即可获得 json 格式的结果:
cqlsh:cycling> select json name, checkin_id, timestamp from checkin;
[json]
------------------------------------------------------------------------------------------------------------------
{"name": "BRAND", "checkin_id": "50554d6e-29bb-11e5-b345-feff8194dc9f", "timestamp": "2016-08-28 21:45:10.406Z"}
{"name": "VOSS", "checkin_id": "50554d6e-29bb-11e5-b345-feff819cdc9f", "timestamp": "2016-08-28 21:44:04.113Z"}
(2 rows)
取自https://docs.datastax.com/en/cql/3.3/cql/cql_using/useQueryJSON.html
您可以使用bash重定向来获取json文件。
cqlsh -e "select JSON * from ${keyspace}.${table}" | awk 'NR>3 {print $0}' | head -n -2 > table.json
DataStax 现在提供名为 DSBulk 的工具,可与 DSE 和 Cassandra 配合使用,并且针对在 DSE/Cassandra 之间加载和卸载数据进行了大幅优化。 它还支持 JSON 格式的输出,如下所示:
dsbulk unload -k keyspace -t table -url out_dir -c json
更多卸载数据的示例,可以在
命令行工具:
cqlsh
放在
json
之后,以 JSON 形式获取
select
输出。我使用了安装了
cqlsh
的容器,但如果您本地安装了
cqlsh
,那么您可以使用它。
grep
仅获取包含 JSON 的行。
cqlsh_output="$(container run --rm cassandra:5 -- /opt/cassandra/bin/cqlsh db -e 'use my_keyspace; select JSON id, my_column from my_table')"
echo "${cqlsh_output}" \
| grep '{' \
| jq --slurp -M '.' \
>./my_table.json