Question

Im insérer des données avec Hector et le récupérer avec JDBC.

Les données ne sont pas en dehors de la colonne indexée, je suis conscient que c'est parce que Cassandra stocke les données sous forme d'octets, puis la convertit lorsque sa lecture (le client le convertit)

Est-ce que quelqu'un sait comment faire cela dans JDBC pour Cassandra ?.

Mon code:

public static void main(String[] args) throws SQLException
    {
        Connection con = null;
        String _KS = "StringMsg";
        String _CFDef = "Tweets";

        try 
        {
            Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
            con = DriverManager.getConnection("jdbc:cassandra://localhost:9160/" + _KS);

            String query = "SELECT username, email, msg, id FROM " + _CFDef + " WHERE 'username'='LTodorov'";

            Statement stmt = con.createStatement();
            ResultSet result = stmt.executeQuery(query);

            System.out.println("hi");
            int i=0;
            while (result.next())
            {
                System.out.println(result.getString("id"));
                System.out.println(result.getString("username"));
                System.out.println(result.getString("msg"));
                System.out.println(result.getString("email"));
                System.out.print("count:" + i + "\n\n");i++;
            }
        } 
        catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        catch (SQLException e) {
            e.printStackTrace();
        }
        finally 
        {
            if (con != null) 
            {
                try 
                {
                    con.close();
                } 
                catch (SQLException e) 
                {
                    e.printStackTrace();
                }
                con = null;
            }
        }
    }

Résultats:

hi
java.nio.HeapByteBuffer[pos=237 lim=258 cap=798]
LTodorov
java.nio.HeapByteBuffer[pos=184 lim=209 cap=798]
java.nio.HeapByteBuffer[pos=144 lim=155 cap=798]
count:0

Résultat de la CLI:

GET Tweets Where username=LTodorov;
-------------------
RowKey: LTodorov1330045080096
=> (column=email, value=6c5f6c74404162762e6267, timestamp=1330045080214000)
=> (column=id, value=4c546f646f726f7631333330303435303830303936, timestamp=13300
45080098000)
=> (column=msg, value=54686973206973206d616b696e67206d652073616466616365, timest
amp=1330045080210000)
=> (column=username, value=LTodorov, timestamp=1330045080217000)

Résultat CLI avec "Supposer le validateur des tweets en tant que UTF8";

RowKey: LTodorov1330045080096
=> (column=email, value=l_ld@Abv.bg, timestamp=1330045080214000)
=> (column=id, value=LTodorov1330045080096, timestamp=1330045080098000)
=> (column=msg, value=This is making me sadface, timestamp=1330045080210000)
=> (column=username, value=LTodorov, timestamp=1330045080217000)

Définition de la famille des colonnes:

CREATE COLUMN FAMILY Tweets
WITH comparator = UTF8Type
AND key_validation_class=UTF8Type
AND column_metadata = [
{column_name: id, validation_class: UTF8Type}
{column_name: email, validation_class: UTF8Type}
{column_name: msg, validation_class: UTF8Type}
{column_name: user, validation_class: UTF8Type}

Des gourous de Cassandra ont des pointeurs? Je récupére les données, mais devrait-elle être convertie dans Java, ou l'API JDBC devrait-elle faire le travail ou est-ce une chose Cassandra? (Je pense que cela ne peut pas être résolu par Cassandra)

Pas de solution correcte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top