我们正在尝试使用datastax java驱动程序将csv文件中的数据插入cassandra。有什么方法可以这样做?我们目前正在使用运行cqlsh从csv文件加载。
pod7payv1#
这个问题很模糊。通常,您应该能够提供代码,并给出一个不太适合您的示例。话虽如此,我只是教了一个班(本周)就这个问题,我们的开发人员在工作。所以我可以给你举几个简单的例子。首先,应该构建一个单独的类来处理cassandra连接对象。我通常用几个构造函数来构建它,这样就可以用几个不同的方法来调用它。但每一个基本上都称为 connect 方法,如下所示:
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 对象:
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 (准备语句并将值绑定到语句)如下所示:
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”的文件夹。这里有一个“基本”示例的链接,我建议您进一步阅读。
1条答案
按热度按时间pod7payv1#
这个问题很模糊。通常,您应该能够提供代码,并给出一个不太适合您的示例。
话虽如此,我只是教了一个班(本周)就这个问题,我们的开发人员在工作。所以我可以给你举几个简单的例子。
首先,应该构建一个单独的类来处理cassandra连接对象。我通常用几个构造函数来构建它,这样就可以用几个不同的方法来调用它。但每一个基本上都称为
connect
方法,如下所示:有了它,我还编写了一些简单的方法来公开
session
对象:有了这些方法,我就可以在服务层中调用这些方法了。一个简单的
INSERT
(准备语句并将值绑定到语句)如下所示:此外,datastax java驱动程序在git repo中有一个名为“examples”的文件夹。这里有一个“基本”示例的链接,我建议您进一步阅读。