使用新版本 spark 在键空间上写入时出现问题 3.x

Problem to write on keyspace with new versions spark 3.x

我正在尝试在 aws 键空间上写入,但出现以下消息:

Spark 版本:3.0.1
连接器:3.0
Java: 1.8
斯卡拉:2.12

关于 github 上的版本:

在 Connector = 2.5.2 和 spark = 2.4.6 等其他旧版本中工作正常。

您应该能够使用 spark 3 和 connector 3 进行连接。这里有一些步骤可以验证您相应地设置了连接并且您拥有正确的权限。

  • 确保您具有读取系统 tables 的权限。
  • 如果您设置了 VPCE 端点,请确保您有 permissions for describe VPC endpoints.
  • 在您的配置中确保 host-validation 在 ssl 配置中设置为 false。

您应该能够针对您的 system.peers table 执行以下查询并从端点 public/private 检索 ips。如果您有 1 个或没有同伴,则需要执行上述步骤。请记住,AWS 控制台不在您的 vpc 中,并且会联系类似于 s3 的 public 端点。

SELECT * FROM system.peers

政策样本。您需要在您的 vpc 上提供对资源 /keyspace/system* and ec2:DescribeNetworkInterfaces" 和 "ec2:DescribeVpcEndpoints" 的访问。

    {
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "cassandra:Select",
            "cassandra:Modify"
         ],
         "Resource":[
            "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/table/mytable",
            "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*"
         ]
      },
      {
         "Sid":"ListVPCEndpoints",
         "Effect":"Allow",
         "Action":[
            "ec2:DescribeNetworkInterfaces",
            "ec2:DescribeVpcEndpoints"
         ],
         "Resource":"*"
      }
   ]
}

通过引用外部配置设置连接。

-conf":"spark.cassandra.connection.config.profile.path=application.conf"

示例驱动程序配置。

datastax-java-driver {
  basic.request.consistency = "LOCAL_QUORUM"
  basic.contact-points = [ "cassandra.us-east-1.amazonaws.com:9142"]

  advanced.reconnect-on-init = true

   basic.load-balancing-policy {
        local-datacenter = "us-east-1"
     }

   advanced.auth-provider = {
       class = PlainTextAuthProvider
       username = "user-at-sample"
       password = "S@MPLE=PASSWORD="
    }

    advanced.throttler = {
       class = ConcurrencyLimitingRequestThrottler
       max-concurrent-requests = 30
       max-queue-size = 2000
    }



   advanced.ssl-engine-factory {
      class = DefaultSslEngineFactory
      hostname-validation = false
    }

    advanced.connection.pool.local.size = 1


}