我正在嘗試使用spark couchbase connector在 aws 膠水作業中運行 Couchbase 查詢。我的查詢是針對現有 Couchbase 存盤桶的簡單 N1Ql 查詢:
var queryResultRDD: RDD[CouchbaseQueryRow] = spark.sparkContext.couchbaseQuery(N1qlQuery.simple(CbN1qlQuery))
如果我有一個長時間運行的查詢,我會收到以下錯誤訊息:
Caused by: com.couchbase.client.java.error.QueryExecutionException: Timeout 1m15s exceeded
at com.couchbase.spark.connection.QueryAccessor$$anonfun$compute$1$$anonfun$apply$2$$anonfun$4.apply(QueryAccessor.scala:56)
at com.couchbase.spark.connection.QueryAccessor$$anonfun$compute$1$$anonfun$apply$2$$anonfun$4.apply(QueryAccessor.scala:53)
at rx.lang.scala.Observable$$anon$32.call(Observable.scala:1324)
1m15s 超時設定可能來自Couchbase 的 75s 默認查詢超時,因此我嘗試將查詢超時設定直接添加到查詢呼叫中,希望它會覆寫默認超時設定:
var queryResultRDD: RDD[CouchbaseQueryRow] = sc.couchbaseQuery(N1qlQuery.simple(CbN1qlQuery), "bucket-name", Some(Duration(130, SECONDS)))
將該持續時間降低到 1 毫秒等不可能的低值會導致不同的查詢超時錯誤。但是,如果我將持續時間延長,如上所示,我仍然會收到相同的 QueryExecutionException,其中超時仍為 1 分 15 秒。我還嘗試在 Glue 作業腳本中設定系統屬性:
System.setProperty("com.couchbase.env.timeout.queryTimeout", "1ms")
但是我仍然收到相同的 1 分 15 秒超時錯誤。我也嘗試spark.couchbase.timeout.queryTimeout以相同的方式設定屬性并得到相同的結果。我還嘗試在 sparkSession 構建器中設定查詢超時配置,但沒有更改:
val Spark = SparkSession
.builder()
.appName(DefaultName)
.config("spark.couchbase.nodes", CbNodes)
.config(s"spark.couchbase.bucket.$SourceBucketName", SourceBucketPassword)
.config("spark.couchbase.username", SourceBucketUserName)
.config("spark.couchbase.password", SourceBucketPassword)
.config("spark.ssl.enabled", CbSslEnabled)
.config("spark.ssl.keyStore", CbKeyStore)
.config("spark.ssl.keyStorePassword", CbKeyStorePassword)
.config("spark.couchbase.timeout.queryTimeout", "1ms")
.getOrCreate()
如何覆寫此 1 分 15 秒查詢超時設定?
uj5u.com熱心網友回復:
在查看了couchbaseconfig 類之后,我發現了配置應該是什么:
.config("com.couchbase.queryTimeout", "10")
其中查詢超時值以毫秒為單位。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/479946.html
