2017-07-13 91 views
2

我想使用Apache Spark在Cassandra db中列出键空间的表。我可以通过sc.cassandraTable("keyspace", "table")访问任何cassandra表,但是我无法列出键空间中的所有表,我想遍历它们。这是我的代码:Scala apache spark cassandra表列表

val conf = new SparkConf(true) 
     .setAppName("Backup app").setMaster("local[4]") 
     .set("spark.cassandra.connection.host", "XXXXX") 
     .set("spark.cassandra.auth.username", "XXXX") 
     .set("spark.cassandra.auth.password", "XXXXX") 
     .setJars(Array("./lib/spark-cassandra-connector-assembly-2.0.2-39-g24f392d.jar")) 

    val sc = new SparkContext(conf) 

    sc.cassandraTable("keyspace", "userstable").select("salt").where("role = ?", "user").collect().toList.foreach { 
    userkeyspace => println(userkeyspace) 
    } 

我该怎么办?

回答

0

我找到了解决办法,这里是我的工作代码(我在那里我存储,以及其他表stb.users,每个用户的“盐”栏下的密钥空间):

val conf = new SparkConf(true) 
     .setAppName("Backup app").setMaster("local[4]") 
     .set("spark.cassandra.connection.host", "XXXX") 
     .set("spark.cassandra.auth.username", "XXXX") 
     .set("spark.cassandra.auth.password", "XXXX") 
     .setJars(Array("./lib/spark-cassandra-connector-assembly-2.0.2-39-g24f392d.jar")) 

    val sc = new SparkContext(conf) 
    val sqlContext = new org.apache.spark.sql.SQLContext(sc); 

    CassandraConnector(conf).withSessionDo { session => 
    sc.cassandraTable("stb", "users").select("salt").where("role = ?", "user").collect().toList.foreach { 
     user => 
     val userSalt = user.getString("salt") 
     val iterator = session.getCluster.getMetadata.getKeyspace(userSalt).getTables().iterator() 
     while(iterator.hasNext) { 
      val tableName = iterator.next().getName 
      println(keyspace + " " + tableName) 
     } 
    } 
    } 
0

您可以使用

system.schema_columnfamilies

表,它包含每个键空间中的表的列表。

SELECT keyspace_name, columnfamily_name FROM schema_columnfamilies; 

sc.cassandraTable("system", "schema_columnfamilies").select("columnfamily_name").where("keyspace_name = ?", "the_keyspace") 
+0

我已经试过了,但遗憾的是它不卡桑德拉3+工作了,他们改变了系统密钥空间表。它给出了这个错误:InvalidRequest:code = 2200 [无效的查询]消息=“未配置的表schema_columnfamilies” – phcaze

相关问题