簡體   English   中英

將粘合作業連接到 Amazon 鍵空間

[英]Connect glue job to Amazon keyspaces

我正在嘗試將 AWS 膠水作業連接到 Amazon 鍵空間。 無論如何,是否可以使用 pyspark 連接和處理這些表。 PS:由於組織限制,我不能使用 AWS cli。

您可以利用開源 spark cassandra 連接器將 AWS Glue 與 Amazon Keyspaces 連接起來。

首先,您需要為您的帳戶啟用 murmur3 分區程序或隨機分區程序。

UPDATE system.local set partitioner='org.apache.cassandra.dht.Murmur3Partitioner' where key='local';

其次,確保您了解所需的容量。 默認情況下,Keyspaces 表是使用 OnDemand 模式創建的,該模式通過根據您之前的流量峰值將資源加倍來學習所需的容量。 新創建的表能夠執行 4000 WCU/秒和 12,000 RCU/秒。 如果您需要更高的容量,請在配置模式下以所需的吞吐量創建您的表,然后切換到按需模式。

第三,在我們的示例存儲庫中找到我們預構建的示例。 我們有導出、導入、計數和前 N 個模式。 這些示例展示了如何將 spark cassandra 連接器加載到 s3,設置數據加載的最佳實踐。 以下代碼段顯示了導出到 s3。

val spark: SparkContext = new SparkContext(conf)
    val glueContext: GlueContext = new GlueContext(spark)
    val sparkSession: SparkSession = glueContext.getSparkSession

    import com.datastax.spark.connector._
    import org.apache.spark.sql.cassandra._
    import sparkSession.implicits._

    Job.init(args("JOB_NAME"), glueContext, args.asJava)

    val tableName = args("TABLE_NAME")
    val keyspaceName = args("KEYSPACE_NAME")
    val backupS3 = args("S3_URI")
    val backupFormat = args("FORMAT")

    val tableDf = sparkSession.read
      .format("org.apache.spark.sql.cassandra")
      .options(Map( "table" -> tableName, "keyspace" -> keyspaceName))
      .load()

    tableDf.write.format(backupFormat).mode(SaveMode.ErrorIfExists).save(backupS3)

    Job.commit()
  }
}

最佳實踐是對每個 DPU/Worker 使用 Glue 速率限制。 了解您希望每個 DPU 達到的吞吐量,並在 cassandra 驅動程序設置中設置節流器。

 advanced.throttler = {
      class = RateLimitingRequestThrottler
      max-requests-per-second = 1000
      max-queue-size = 50000
      drain-interval = 1 millisecond
    }

您需要確保您擁有適當的 IAM 權限來訪問 Amazon Keyspaces。 如果您使用 VPC 端點,您還需要在此處包含權限

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM