2016-07-25 2 views
0

Je suis en train d'insérer un JSON dans le tableau Cassandra en utilisant le code shell et Java, mais obtenir cette erreur: Aucune alternative viable à l'entrée JSONAucune alternative viable à l'entrée 'JSON' exception dans cqlsh. Pas en mesure d'insérer JSON dans le tableau Cassandra

  1. Cassandra Versions: [ cqlsh 4.1.1 | Cassandra 2.0.12 | Spécification CQL 3.1.1 | Protocole Thrift 19.39.0]
  2. Script de création de table CREATE TABLE users (id int PRIMARY KEY, age int, texte d'état);
  3. Insérer un script INSERT INTO utilisateurs JSON '{"id": 888, "age": 42, "state": "TX"}';
  4. Code similaire pour insérer à l'aide de Java: Chaîne cqlStatement = "INSERT INTO utilisateurs JSON '{\" id \ ": 888, \" age \ ": 21, \" état \ ": \" TX \ "}' "; cassandraTemplate.execute (cqlStatement);

Obtenir exception dans les deux cas que: Aucune alternative viable à l'entrée « JSON » 5. Ai-je besoin de mettre en place quelque chose Cassandra à accepter le commandement JSON dans le terminal?

Répondre

-1

trouvé réponse à la question qui travaille dans Cassandra 2.0.12 ainsi

Condition préalable:

  1. Version minified de JSON pour insérer dans le tableau
  2. Lien http://www.httputility.net/json-minifier.aspx peut être utilisé pour réduire le JSON (Allez sur ce site et copiez le contenu JSON
    , réduisez et copiez la sortie)
  3. Vérifier toute guillemet simple («), le remplacer par un double apostrophe (» ')
  4. sûr que la chaîne n'est pas fin à
  5. JSon doit être inséré dans texte colonne

Dans la donnée échantillon d'une table avec le nom employé a été créé qui a 4 colonnes. Eid une valeur entière, ename une valeur de texte, ephonenumber en tant que liste de texte et eaddress en tant que texte.eaddress est la colonne où JSON est censé être inséré

étapes à exécuter:

  1. Créer une table permet de dire employé avec 4 colonnes eid, Ename, ephonenumber, eaddress avec eid clé primaire

commande à exécuter dans le terminal CQL:

créer employé de table (ei d int, texte ename, liste ephonenumber, texte de l'éditeur, clé primaire (eid));

  1. Insérer une ligne dans le tableau des employés avec ephonenumber liste et eaddress JSON

    Commande à exécuter dans le terminal CQL

insertion dans l'employé (eid, ename, ephonenumber, eaddress) valeurs (1, 'Sourav', ['7773330000', '5550003333'], '{"bureau": "197 - ITPL - Bangalore", "domicile": "196 -Thubarahalli - Bangalore "}");

  1. Vérifiez à l'aide requête de sélection si la chaîne JSON a été insérée

Select * de l'employé

0

Pas possible avec votre version 2.0.12. On dirait que Cassandra 2.2 est la version minimale qui supporte "INSERT INTO utilisateurs JSON ...".

Avec < 2.2, les solutions de rechange sont capturés ici:

insert JSON String in Apache-Cassandra 0.8.2