如果查詢超過 10 分鐘,我想停止 Spark 查詢。
但這僅適用于一個磁區。
我的意思是如果查詢達到 Hadoop 中的 2 個磁區,那么時間將為 20 分鐘。
例如,為此我需要一個 10 分鐘的閾值:
SELECT Max(col1),
Min(col2)
FROM my_parititoned_table_on_hadoop
WHERE partitioned_column = 1
為此,我需要一個 20 分鐘的閾值:
SELECT Max(col1),
Min(col2)
FROM my_parititoned_table_on_hadoop
WHERE partitioned_column IN ( 1, 2 )
這可能嗎?
uj5u.com熱心網友回復:
不可以。Spark 中沒有這樣的支持。
uj5u.com熱心網友回復:
如果您的資料存盤為鑲木地板,則標題中問題的答案(“有沒有辦法計算磁區數...”)是“是”。您可以運行explain()您的查詢并查看在查詢執行期間將掃描多少個磁區。例如
scala> spark.sql("select * from tab where p > '1' and p <'4'").explain()
== Physical Plan ==
*(1) FileScan parquet default.tab[id#375,desc#376,p#377] Batched: true, Format: Parquet,
Location: PrunedInMemoryFileIndex[hdfs://ns1/user/hive/warehouse/tab/p=2, hdfs://ns1/user/hive/warehouse...,
**PartitionCount: 2,** PartitionFilters: [isnotnull(p#377), (p#377 > 1), (p#377 < 4)],
PushedFilters: [], ReadSchema: struct<id:int,desc:string>
...從中PartitionCount: x可以很容易地決議。
第二個問題(技術上是一個宣告—— “如果查詢需要超過 10 分鐘,我想停止 Spark 查詢”)是“否”,正如@thebluephantom 所說。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/402262.html
標籤:阿帕奇火花 Hadoop apache-spark-sql
上一篇:創建jwt簽名者時簽名演算法錯誤
