使用datastax驱动程序将数据插入cassandra

nszi6y05  于 2021-06-15  发布在  Cassandra
关注(0)|答案(1)|浏览(429)

我们正在尝试使用datastax java驱动程序将csv文件中的数据插入cassandra。有什么方法可以这样做?
我们目前正在使用运行cqlsh从csv文件加载。

pod7payv

pod7payv1#

这个问题很模糊。通常,您应该能够提供代码,并给出一个不太适合您的示例。
话虽如此,我只是教了一个班(本周)就这个问题,我们的开发人员在工作。所以我可以给你举几个简单的例子。
首先,应该构建一个单独的类来处理cassandra连接对象。我通常用几个构造函数来构建它,这样就可以用几个不同的方法来调用它。但每一个基本上都称为 connect 方法,如下所示:

public void connect(String[] nodes, String user, String pwd, String dc) {
    QueryOptions qo = new QueryOptions();
    qo.setConsistencyLevel(ConsistencyLevel.LOCAL_ONE);

    cluster = Cluster.builder()
        .addContactPoints(nodes)
        .withCredentials(user,pwd)
        .withQueryOptions(qo)
        .withLoadBalancingPolicy(
            new TokenAwarePolicy(
                DCAwareRoundRobinPolicy.builder()
                .withLocalDc(dc)
                .build()
                )
        )
        .build();
        session = cluster.connect();

有了它,我还编写了一些简单的方法来公开 session 对象:

public ResultSet query(String strCQL) {
    return session.execute(strCQL);
}

public PreparedStatement prepare(String strCQL) {
  return session.prepare(strCQL);
}

public ResultSet query(BoundStatement bStatement) {
  return session.execute(bStatement);
}

有了这些方法,我就可以在服务层中调用这些方法了。一个简单的 INSERT (准备语句并将值绑定到语句)如下所示:

String[] nodes = {"10.6.8.2","10.6.6.4"};
CassandraConnection conn = new CassandraConnection(nodes, "aploetz", "flynnLives", "West-DC");

String userID = "Aaron";
String value = "whatever";
String strINSERT = "INSERT INTO stackoverflow.timestamptest "
    + "(userid, activetime, value) "
    + "VALUES (?,dateof(now()),?)";     

PreparedStatement pIStatement = conn.prepare(strINSERT);
BoundStatement bIStatement = new BoundStatement(pIStatement);
bIStatement.bind(userID, value);
conn.query(bIStatement);

此外,datastax java驱动程序在git repo中有一个名为“examples”的文件夹。这里有一个“基本”示例的链接,我建议您进一步阅读。

相关问题