[英]Running a SELECT query with ALLOW FILTERING on Amazon Keyspaces returns no data
[英]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.