将JSON数据集导入Cassandra

时间:2016-11-02 20:59:28

标签: json cassandra

我有一个包含大约80,000条记录的大型数据集。我想把它导入Cassandra。我只看到CSV格式的文档。这可能是JSON吗?

3 个答案:

答案 0 :(得分:3)

在2020年,您可以使用DataStax Bulk Loader utility (DSBulk)来加载和卸载CSV和JSON格式的Cassandra / DSE数据。它非常灵活,并允许仅加载部分数据,将JSON字段灵活地映射到表字段等。它支持Cassandra 2.1+,并且运行速度非常快。

在最简单的情况下,数据加载命令如下所示:

dsbulk load -k keyspace -t table -c json -url your_file.json

DataStax博客上有一系列有关DSBulk的文章:123456

答案 1 :(得分:0)

要插入JSON数据,请将JSON添加到INSERT命令。 有关详细信息,请参阅此链接 https://docs.datastax.com/en/cql/3.3/cql/cql_using/useInsertJSON.html

答案 2 :(得分:0)

dsbulk解决方案作为最终解决方案,但是您可以考虑使用以下技巧,将json格式的消息(每行一条)实时转换为csv(无需单独转换),然后使用{{ 1}},即:

cqlsh

说明:

这需要安装cat file.json | jq -r '[.uid,.gender,.age] | @csv' | cqlsh -e 'COPY labdata.clients(uid,gender,age) from STDIN;'实用程序,例如ubuntu为jq

这里有一个包含以下消息的文件:

apt install jq

这是我即时将其转换为csv的方式:

{"uid": "d50192e5-c44e-4ae8-ae7a-7cfe67c8b777", "gender": "F", "age": 19} {"uid": "d502331d-621e-4721-ada2-5d30b2c3801f", "gender": "M", "age": 32}

其中-r将删除一些额外的\“,但是您仍然会得到带引号的字符串:

cat file | jq -r '[.uid,.gender,.age] | @csv'

现在,如果您使用"d50192e5-c44e-4ae8-ae7a-7cfe67c8b777","F",19 "d502331d-621e-4721-ada2-5d30b2c3801f","M",32 在键空间clients中为此数据创建表labdata,则:

cqlsh

那么您应该能够运行上面的CREATE TABLE clients ( uid ascii PRIMARY KEY, gender ascii, age int);命令