分割區(DataSourceReader)

回傳此資料來源的一連串分割。

分割區用於將資料讀取操作拆分成平行任務。 如果此方法回傳 N 個分割,查詢規劃器將建立 N 個任務。 每個任務會平行執行 read() ,使用相應的分割值讀取資料。

這個方法會在查詢規劃期間呼叫一次。 預設情況下,它會回傳一個帶有 的單一 None分割。 子類別可以覆寫此方法以回傳多個分割區。

建議在讀取大型資料集時,為了提升效能,應覆蓋此方法。

語法

partitions()

退貨

Sequence[InputPartition]

此資料來源的一連串分割。 每個分割值必須是它的一個實例 InputPartition 或其子類別。

Notes

所有分割值必須是可選取的物件。

Examples

回傳整數列表:

def partitions(self):
    return [InputPartition(1), InputPartition(2), InputPartition(3)]

回傳一串字串:

def partitions(self):
    return [InputPartition("a"), InputPartition("b"), InputPartition("c")]

回傳一個範圍列表:

class RangeInputPartition(InputPartition):
    def __init__(self, start, end):
        self.start = start
        self.end = end

def partitions(self):
    return [RangeInputPartition(1, 3), RangeInputPartition(5, 10)]