Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何列出所有cassandra表_Scala_Apache Spark_Cassandra_Spark Cassandra Connector - Fatal编程技术网

Scala 如何列出所有cassandra表

Scala 如何列出所有cassandra表,scala,apache-spark,cassandra,spark-cassandra-connector,Scala,Apache Spark,Cassandra,Spark Cassandra Connector,cassandra数据库中有许多表,其中包含标题为user_id的列。user_id的值是指存储在user表中的user。由于删除了一些用户,我想删除所有表中包含标题为user_id的列的孤立记录 是否有一种方法可以使用CassandraSQLContext或任何其他内置方法或自定义过程列出所有表,以避免显式定义表列表?有一些系统表可以提供有关存储的键空间、表和列的信息 在cqlsh控制台中尝试运行以下命令: 获取密钥空间信息 从system.schema_键空间中选择* 获取表格信息 从sy

cassandra数据库中有许多表,其中包含标题为user_id的列。user_id的值是指存储在user表中的user。由于删除了一些用户,我想删除所有表中包含标题为user_id的列的孤立记录


是否有一种方法可以使用CassandraSQLContext或任何其他内置方法或自定义过程列出所有表,以避免显式定义表列表?

有一些系统表可以提供有关存储的键空间、表和列的信息

在cqlsh控制台中尝试运行以下命令:

  • 获取密钥空间信息

    从system.schema_键空间中选择*

  • 获取表格信息

    从system.schema_columnfamilies中选择columnfamily_name,其中keyspace_name='keyspace name'

  • 获取表格信息

    从system.schema_列中选择列_名称、类型、验证器,其中keyspace_名称='keyspace name'和columnfamily_名称='table name'

  • 从V5.0.x开始

  • 获取密钥空间信息

    从system_schema.keyspace中选择*

  • 获取表格信息

    SELECT*FROM system_schema.tables,其中keyspace_name='keyspace name'

  • 获取表格信息

    从system\u schema.columns中选择*
    其中keyspace_name='keyspace_name'和table_name='table_name'

  • 从v6.0开始

  • 获取密钥空间信息

    SELECT*FROM system\u schema.keyspace

  • 获取表格信息

    SELECT*FROM system_schema.tables,其中keyspace_name='keyspace name'

  • 获取表格信息

    从system\u schema.columns中选择*
    其中keyspace_name='keyspace_name'和table_name='table_name'


  • 您可以使用datastax核心驱动程序和集群元数据实现您想要的。以下示例将列出键空间中的所有表以及每个表中的列:

     Cluster cluster= Cluster.builder().addContactPoint(clusterIp).build();
        Metadata metadata =cluster.getMetadata();
    
       Collection<TableMetadata> tablesMetadata= metadata.getKeyspace("mykeyspacename").getTables();
        for(TableMetadata tm:tablesMetadata){
            System.out.println("Table name:"+tm.getName());
            Collection<ColumnMetadata> columnsMetadata=tm.getColumns();            
            for(ColumnMetadata cm:columnsMetadata){
                String columnName=cm.getName();
                System.out.println("Column name:"+columnName);
            }
        }
    
    Cluster Cluster=Cluster.builder();
    元数据=cluster.getMetadata();
    Collection tableMetadata=metadata.getKeyspace(“mykeyspacename”).getTables();
    for(TableMetadata tm:TableMetadata){
    System.out.println(“表名:+tm.getName());
    Collection columnsMetadata=tm.getColumns();
    对于(columnsMetadata cm:columnsMetadata){
    字符串columnName=cm.getName();
    System.out.println(“列名:”+columnName);
    }
    }
    
    来自
    cqlsh
    执行
    描述表格

    。如果以后发布,请检查system_架构键空间。 从

    如果看到“system_schema”,那么表的元数据就在这个键空间中

    cqlsh>use system_schema;
    
    cqlsh>select keyspace_name,table_name from tables where keyspace_name = 'system';
    
    要列出所有表格(仅表格名称)

    DESC表

    要列出所有表和模式(CQL创建语句)

    DESC{$KEYSPACE\u NAME}
    {$KEYSPACE\u NAME}
    是键空间的名称

    我使用的是从官方网站下载的Apache Cassandra 3.11.4二进制软件包:

    cql> show version;
    [cqlsh 5.0.1 | Cassandra 3.11.4 | CQL spec 3.4.4 | Native protocol v4]
    

    Apache Cassandra的CQL参考如下:

    尝试运行以下查询:

    cqlsh> describe keyspace &lt;keyspace_name&gt;;
    

    只需连接CQLSH并尝试以下命令

    描述表格;或

    描述模式


    还可以“描述键空间;”和“使用键空间;”您希望在其中查看带有“descripe tables;”的表

    这是列出所有表的最新最简单的方法为了完整性,请运行
    use my_keyspace首先。是否可以按字母顺序排列输出?对于我来说,请确保执行
    使用键空间\u name
    否则您将获得所有键空间的结果。
    系统
    键空间不是DSE特定的-它是一个核心Cassandra功能。。。Cassandra版本之间的模式表示不同,因此最好的方法是使用
    cqlsh
    描述键空间
    ,或者通过@zoran jeremicalex指出的元数据进行访问,这并不意味着系统键空间是特定于DSE的,但有些是。架构表已移出“系统”键空间,因此表系统键空间不再位于该键空间中。。这是针对DSE而非开源Cassandra的具体答案。仅引用了DSE的元数据。描述表;“发布”是获取表格列表的一种非常简单的方法。评论围绕DSE的元数据而非开源。如果您正在查找那些不在DSE中的系统表。如果试图在应用程序中生成表列表,有时无法运行desc,但需要运行cql…系统键空间是Cassandra特有的。您描述的差异是Cassandra2.x和3.x之间的差异(请参阅)。特定于DSE的键空间通常具有
    DSE
    前缀,如
    DSE\u安全性
    DSE\u租约
    等(尽管
    cfs
    solr\u admin
    不遵循此约定)。总的来说,如果您需要以编程方式访问此数据,那么最好使用支持
    元数据的驱动程序
    ——这与版本无关。对于我的cassandra版本
    [cqlsh 5.0.1 | cassandra 3.11.3 | CQL spec 3.4.4 |本机协议v4]
    获取键空间信息可与
    选择*自系统\模式一起使用。键空间
    以及获取表信息
    选择*自系统\模式。表中键空间\名称='键空间名称'
    cqlsh:描述键空间;描述模式不是CQL命令,而是
    cqlsh
    command…@AlexOtt是的,我的意思是在连接cqlsh之后。请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,更容易吸引选票。
    desc keyspaces;  // list all databases/collections names
    use anyKeyspace;  // select any database
    desc tables;      // list all tables in collection/ database
    
    
    desc keyspaces;  // list all databases/collections names
    use anyKeyspace;  // select any database
    desc tables;      // list all tables in collection/ database