Как я могу создать таблицу и вставить данные JSON с помощью JAVA в CQL? - PullRequest
0 голосов
/ 25 апреля 2019

Я новый ученик в CQL. Я использую докер env для запуска Cassandra.

В предыдущем у меня были две таблицы (рестораны и инспекция) с вставленными данными csv и следующей настройкой:

enter image description here

Поскольку метод join не поддерживается в CQL, мне нужно повторно вставить объединенный набор данных (JSON) в новую таблицу (вызов InspectionrestaurantNY).

Поэтому я попытался создать таблицу InspectionrestaurantNY: enter image description here

Затем у меня есть jav, который помогает мне установить файл json. Но я получил ошибку, и я не знаю, какую настройку таблицы (InspectionrestaurantNY) мне следует создать для вставки данных json.

Я запустил java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -keyspace restaurantsNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json, показала следующую ошибку:

enter image description here* * 1030

И мой json файл хранится так: enter image description hereenter image description hereenter image description hereenter image description here

Какую настройку таблицы я должен сначала создать, чтобы вставить данные JSON?

Как решить ошибку JAVA?

Большое спасибо.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2019

Похоже, вы используете неверное имя таблицы при запуске jar для вставки JSON.Командой, которой вы поделились, является

java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -ключение ресторановNY -columnFamily InspectionsRestaurants -file InspectionsRestaurantsNY.json

Следуетbe

java -jar JSonFile2Cassandra.jar -host 192.168.99.101 -port 3000 -ключение ресторановNY -колонкаСемейные инспекцииRestaurantsNY-файловые инспекцииRestaurantsNY.json

т.е. использовать правильное имя таблицы1013 * InspectionsRestaurantsNY для аргумента -columnFamily в приведенной выше команде.

Также всегда лучше не использовать соглашение о регистре верблюдов, поскольку имена идентификаторов CQL нечувствительны к регистру.Если вы действительно хотите использовать имена, чувствительные к регистру, вы должны заключить имена в двойные кавычки.Если двойные кавычки не используются, то Cassandra преобразует имена со смешанным регистром в нижний регистр.Но в приведенном выше запросе я не думаю, что это является причиной ошибки.Я думаю, что это из-за неправильной фамилии столбца.

Проверьте здесь имена смешанных случаев https://docs.datastax.com/en/cql/3.3/cql/cql_reference/ucase-lcase_r.html

0 голосов
/ 25 апреля 2019

Проблема в том, что Cassandra чувствительна к регистру при обработке имен, вы создали ее с верблюжьим регистром InspectionsRestaurantsNY, но вы пытаетесь вставить его в нижнем регистре inspectionsrestaurantsny.

Имея имена впредпочтительнее использовать нижний регистр, так как при использовании cqlsh имя необходимо заключать в двойные кавычки, если есть заглавные буквы.

...