卡桑德拉 | AttributeError - 'NoneType' 对象没有属性 'is_up'

如何解决卡桑德拉 | AttributeError - 'NoneType' 对象没有属性 'is_up'

我在 Cassandra 数据库中有两个结构相同的表。它们都在同一个键空间中。我需要将数据从一张表移动到另一张表。我使用 copY/TO 创建了一个标准的 CSV 文件,现在我想使用另一个 Cassandra 表中的 copY/FROM 上传内容。但是,我收到以下错误

Failed to import 1926 rows: AttributeError - 'nonetype' object has no attribute 'is_up',given up after 1 attempts
Exceeded maximum number of insert errors 1000

我用了什么?

  1. cqlsh 5.0.1
  2. 卡桑德拉 3.11.2
  3. CQL 规范 3.4.4
  4. 本机协议 v4

我使用这样的命令在本地机器上创建了 CSV 文件

copY "keyspace_1"."table_1" (column_1,column_2,column_3,column_4,column_5,column_6,column_7,column_8,column_9,column_10,column_11,column_12,column_13,column_14,column_15) TO 'test.csv' WITH delimiter=';' AND header=TRUE;

上面的命令创建 CSV 文件没有任何问题。我没有很多数据。第一个表只有 1926 个条目。用于导入的 CSV 文件的前 5 行示例:

column_1;column_2;column_3;column_4;column_5;column_6;column_7;column_8;column_9;column_10;column_11;column_12;column_13;column_14;column_15
a83aaa26-2f0d-11eb-9330-af4bd388f154;a829040d-2f1d-11eb-9a4c-0b934b0a1818;791d6ed2-e5ec-4860-a165-e25b77dcb075;69f2f19a-3647-4719-abea-315fcba0c29b;2020-11-25 12:56:38.676+0000;;False;True;True;Hello!;2020-11-25 12:56:38.676+0000;;;;
a83aaa26-2f0d-11eb-9330-af4bd388f154;ea7d7c94-2f1c-11eb-a27a-0b934b0a1818;c0bc8368-644b-4238-b629-773f7f3163d8;69f2f19a-3647-4719-abea-315fcba0c29b;2020-11-25 12:51:20.466+0000;;False;False;True;dddd;2020-11-25 12:51:20.467+0000;;;;
a83aaa26-2f0d-11eb-9330-af4bd388f154;e702d2d4-2f1c-11eb-ae91-0b934b0a1818;791d6ed2-e5ec-4860-a165-e25b77dcb075;69f2f19a-3647-4719-abea-315fcba0c29b;2020-11-25 12:51:14.625+0000;;True;True;True;d;2020-11-25 12:51:14.625+0000;;;;
a83aaa26-2f0d-11eb-9330-af4bd388f154;e45d01eb-2f1c-11eb-b7a1-0b934b0a1818;791d6ed2-e5ec-4860-a165-e25b77dcb075;69f2f19a-3647-4719-abea-315fcba0c29b;2020-11-25 12:51:10.187+0000;;True;True;True;1;2020-11-25 12:51:10.187+0000;;;;
a83aaa26-2f0d-11eb-9330-af4bd388f154;7da3e5ae-2f0f-11eb-87a2-5120df6c4a8a;791d6ed2-e5ec-4860-a165-e25b77dcb075;69f2f19a-3647-4719-abea-315fcba0c29b;2020-11-25 11:15:14.385+0000;;True;True;True;123;2020-11-25 11:15:14.385+0000;;;;

之后,我运行第二个命令,该命令必须将内容上传到第二个表:

copY "keyspace_1"."table_2" (column_1,column_15) FROM 'test.csv' WITH delimiter=';' AND header=TRUE;

此问题的原因是什么以及如何解决

我使用下面的 CQL 查询创建了第一个表。第二个表具有相同的结构。

create table table_1 (
    column_1 uuid,column_2 timeuuid,column_3 uuid,column_4 uuid,column_11 text,column_14 uuid,column_12 uuid,column_13 uuid,column_15 text,column_10 boolean,column_8 boolean,column_9 boolean,column_5 timestamp,column_6 timestamp,column_7 timestamp,primary key (
        column_1,column_2
    )
) with clustering order by (
    column_2 desc
);

编辑 1

我在终端中使用了这样的命令:

dsbulk load -url '/my_path/data.csv' -h '"my_host"' -port my_port -k 'keyspace_1' -t 'table_1' -header true -delim ';' -m '0=column_1,1=column_2,2=column_3'

错误信息

[driver] Error connecting to Node(endPoint=my_host/x.xxx.xx.xxx:xxxx,hostId=null,hashCode=7edbe679),trying next node (ConnectionInitException: [driver|control|id: 0x7bfdbb2f,L:/xxx.xxx.x.xx:xxxxx - R:my_host/x.xxx.xx.xxx:xxxx] Protocol initialization request,step 1 (OPTIONS): unexpected failure (com.datastax.oss.driver.api.core.connection.ClosedConnectionException: Lost connection to remote peer))
Operation LOAD_20210211-073148-547063 Failed: Could not reach any contact point,make sure you've provided valid addresses (showing first 1 nodes,use getAllErrors() for more): Node(endPoint=my_host/x.xxx.xx.xxx:xxxx,hashCode=7edbe679): [com.datastax.oss.driver.api.core.connection.ConnectionInitException: [driver|control|id: 0x7bfdbb2f,step 1 (OPTIONS): unexpected failure (com.datastax.oss.driver.api.core.connection.ClosedConnectionException: Lost connection to remote peer)].
   Suppressed: [driver|control|id: 0x7bfdbb2f,step 1 (OPTIONS): unexpected failure (com.datastax.oss.driver.api.core.connection.ClosedConnectionException: Lost connection to remote peer).
     Caused by: Lost connection to remote peer.

解决方法

从错误看来,连接有问题。

但实际上,最好不要使用 cqlsh 的 COPY 命令 - 它有很多问题,不能处理极端情况等。有一个 tool called DSBulk (open source) 是专为在 Cassandra/DSE 中加载/卸载大量数据而编写。

要卸载数据,只需执行:

dsbulk unload -k keyspace1 -t table1 -url path_to_unload

并加载相同的数据:

dsbulk unload -k keyspace2 -t table2 -url path_to_unload

如果表格相同,您可能不需要指定任何额外的参数 - 一切都会自动处理。

附言DSBulk 针对加载/卸载操作进行了大量优化,并有很多选项,包括从/向压缩文件导入/导出、提供自定义查询等。

有一系列关于 DSBulk 的博文,可以提供更多信息和示例:12345,6

,

您需要下载 pem 文件

curl https://certs.secureserver.net/repository/sf-class2-root.crt -O

创建信任库

openssl x509 -outform der -in /home/ec2-user/sf-class2-root.crt -out temp_file.der
keytool -import -alias new-cassandra -keystore /home/ec2-user/cassandra_truststore.jks -file temp_file.der -storepass amazon -noprompt

设置环境变量

ENV javax.net.ssl.trustStore=/home/ec2-user/cassandra_truststore.jks
ENV javax.net.ssl.trustStorePassword=amazon

配置驱动

dsbulk {
   monitoring.csv = true
   batch.maxBatchStatements=1
   batch.mode=DISABLED
   log.maxErrors=-1
}

datastax-java-driver {
  basic {
   request.consistency = "LOCAL_QUORUM"
   request.default-idempotence = true
   }
  advanced {
      schema.enabled = false
      token-map.enabled = false
      prepared-statements.prepare-on-all-nodes = false
      prepared-statements.reprepare-on-up = false
      advanced.netty.io-group.size = 64

      reconnect-on-init = true
      reconnection-policy {
        base-delay = 100 milliseconds
        max-delay = 1 seconds
      }

      ssl-engine-factory {
         class = DefaultSslEngineFactory
         hostname-validation = false
      }
       connection {
          pool {
             local.size = 3
             remote.size = 1
          }
        }
      }
    }

}

执行命令

dsbulk load -f default-ks-bulk-loader.conf -k aws -t smoketest -url random.csv --driver.basic.contact-points '["cassandra.us-east-1.amazonaws.com:9142"]' -m "0=id,1=event,2=data" -u mike -p pass

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?