cassandra DSBulk无法连接到群集以加载CSV数据

7fhtutme  于 2023-03-02  发布在  Cassandra
关注(0)|答案(2)|浏览(153)

我正在尝试将CSV文件加载到使用dsbulk实用程序的cassandra群集。我有CSV文件的本地副本,并尝试连接到远程群集并将CSV加载到表中。但是,dsbulk无法识别远程群集地址,并显示

Could not reach any contact point, make sure you've provided valid addresses

以及

Caused by: An existing connection was forcibly closed by the remote host.

我正在使用intellij中的相同连接参数连接到sslenabled群集,它工作正常。无法确定它不与dsbulk一起工作的原因。请查找dsbulk的application. conf和我正在尝试运行的命令

dsbulk {
  --dsbulk.connector.name = csv
  --dsbulk.connector.csv.url = <CSV_Path>
  --dsbulk.connector.csv.header true
  --datastax-java-driver.basic.contact-points = [ "169.XX.XXX.XX", "169.XX.XXX.XX", "169.XX.XXX.XX" ]
  --datastax-java-driver.advanced.auth-provider.username = <user_name>
  --datastax-java-driver.advanced.auth-provider.password = <pwd
  --dsbulk.schema.keyspace = <key space
  --dsbulk.schema.table = <table
  --datastax-java-driver.advanced.ssl-engine-factory.truststore-path = <cacerts path<br/>
  --datastax-java-driver.advanced.ssl-engine-factory.truststore-password = <pwd
  --datastax-java-driver.advanced.resolve-contact-points = true
}

命令:

$ dsbulk load -url CSV Path**

上述命令无法识别application.conf属性,并尝试连接到www.example.com127.0.0.1
错误:

[driver] Error connecting to Node(endPoint=/127.0.0.1:9042, hostId=null, hashCode=2c61adb4)

不确定dsbulk未使用conf文件的问题是什么

$ dsbulk load -url CSV Path -k keysapce -t table -h "[ "169.XX.XXX.XX", "169.XX.XXX.XX", "169.XX.XXX.XX" ]" -u userName -p pwd

以上命令无法连接到显式添加的群集节点。错误:

[driver] Error connecting to Node(endPoint=/169.XX.XXX.XX:9042, hostId=null, hashCode=2a38b2fe),
Suppressed: [driver|control|id: 0x17d0139b, L:/172.31.50.184:59702 - R:/169.XX.XXX.XXX:9042] Protocol initialization request, step 1 (OPTIONS): unexpected failure (com.datastax.oss.driver.api.core.connection.ClosedConnectionException: Unexpected error on channel).
     Caused by: Unexpected error on channel.
       Caused by: An existing connection was forcibly closed by the remote host.

dsbulk正在所有节点上重试,并给出相同的错误。
Auth正在重定向到纯文本,我相信这将适用于我的用例

Username and password provided but auth provider not specified, inferring PlainTextAuthProvider

您能否就我的配置或与远程群集的连接的问题提出建议?
我的实际用例是每周将数百万条记录从Sybase归档到Cassandra,为此我尝试创建一个简单的java实用程序来执行此dsbulk。
先谢谢你了。

bqjvbblv

bqjvbblv1#

问题是您没有正确设置配置文件中条目的格式,因此DSPulk无法分析它们。由于配置文件不可用,DSPulk默认连接到localhost127.0.0.1)。
正确的格式如下所示:

dsbulk {
   connector.name = csv
   schema.keyspace = "keyspacename"
   schema.table = "tablename"
}

然后,您需要单独定义Java驱动程序选项,如下所示:

datastax-java-driver {
  basic {
    contact-points = [ "cp1", "cp2", "cp3"]
  }
  advanced {
    ssl-engine-factory {
      keystore-password = "keystorepass"
      keystore-path = "/path/to/keystore.file"
      class = DefaultSslEngineFactory
      truststore-password = "truststorepass"
      truststore-path = "/path/to/truststore.file"
    }
  }
}

如果您没有正确配置SSL,那么驱动程序将无法连接到节点上的任何节点,这就是您提到的那些错误的原因。
请注意,您可以将Java驱动程序配置放在单独的driver.conf文件中,但需要确保在应用程序配置中使用以下行引用它:

include classpath("/path/to/driver.conf")

详情请参见Using SSL with DSBulk。干杯!

brqmpdu1

brqmpdu12#

application.conf文件的内容不正确。请参阅this documentation以了解如何构造配置文件。

相关问题