【问题标题】:Insert data into cassandra using datastax driver使用 datastax 驱动程序将数据插入 cassandra
【发布时间】:2019-04-18 11:20:32
【问题描述】:

我们正在尝试使用 Java 的 DataStax 驱动程序将 CSV 文件中的数据插入 Cassandra。有哪些可用的方法来做到这一点?

我们目前正在使用运行 cqlsh 从 CSV 文件加载。

【问题讨论】:

标签: cassandra datastax-java-driver


【解决方案1】:

这个问题很模糊。通常,您应该能够提供代码,并举例说明一些不太适合您的东西。

话虽如此,我刚刚(本周)为我们工作中的开发人员教授了一堂关于这个主题的课程。所以我可以给你一些简单的例子。

首先,您应该构建一个单独的类来处理您的 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 存储库中有一个名为“examples”的文件夹。这是a link to the "basic" examples,我建议您进一步阅读。

【讨论】:

    猜你喜欢
    • 2016-01-22
    • 1970-01-01
    • 2015-08-08
    • 1970-01-01
    • 2016-02-27
    • 2017-01-20
    • 2016-10-06
    • 2019-01-31
    • 1970-01-01
    相关资源
    最近更新 更多