【问题标题】:How can I create the Table and insert the json data by using JAVA in CQL?如何在 CQL 中使用 JAVA 创建表并插入 json 数据?
【发布时间】:2019-09-14 23:58:53
【问题描述】:

我是 CQL 的新手。 我正在使用 docker env 来运行 Cassandra。

在以前,我有两个表(餐厅和检查),通过 csv 和以下设置插入数据:

由于 CQL 不支持 join 方法,我需要将连接的数据集 (JSON) 重新插入到新表中(调用 InspectionrestaurantNY)。

因此,我尝试创建 InspectionrestaurantNY 表:

然后,我有jav,它可以帮助我安装json 文件。 但我得到了错误,我不知道我应该创建什么表(InspectionrestaurantNY)设置来插入json 数据。

我运行java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace restaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json,它显示以下错误:

而且,我的json 文件存储如下:

我应该首先建立什么表设置来插入 JSON 数据?

JAVA报错如何解决?

非常感谢。

【问题讨论】:

  • 请考虑粘贴实际代码或错误日志而不是图像。

标签: java json cassandra cql


【解决方案1】:

在运行 jar 插入 JSON 时,您似乎使用了错误的表名。你分享的命令是

java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace RestaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json

应该是吧

java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace RestaurantsNY -columnFamily InspectionsRestaurantsNY -file InspectionsRestaurantsNY.json

即在上述命令中为 -columnFamily 参数使用正确的表名 InspectionsRestaurantsNY

此外,最好不要使用驼峰式大小写约定,因为 CQL 标识符名称不区分大小写。如果您真的想要区分大小写的名称,那么您应该用双引号将名称括起来。如果不使用双引号,则 Cassandra 会将混合大小写的名称转换为小写。但在上面的查询中,我认为这不是错误的原因。我认为这是由于错误的列族名称。

在此处查看混合大小写名称 https://docs.datastax.com/en/cql/3.3/cql/cql_reference/ucase-lcase_r.html

【讨论】:

    【解决方案2】:

    问题是 Cassandra 在处理名称时区分大小写,您使用驼峰式大小写 InspectionsRestaurantsNY 创建它,但您尝试将其插入小写 inspectionsrestaurantsny

    最好使用小写的名称,因为当您使用 cqlsh 时,如果有大写字母,则需要将名称用双引号括起来。

    【讨论】:

    • 这是什么意思? java错误是因为InspectionsRestaurantsNY名称上的骆驼大小写?
    • 当我运行desc inspectionsrestaurantnydesc InspectionsRestaurantsNY时也可以在cqlsh中返回结果
    • java 错误是因为执行插入的查询使用小写的表名
    • 一个问题,您如何表明您将使用密钥空间 restaurantsNY ?如果您在插入查询中包含restaurantsNY.InspectionsRestaurantsNY,它可能会起作用
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-07
    • 2016-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多