pyspark.sql.streaming.DataStreamWriter.foreach
的用法。用法:
DataStreamWriter.foreach(f)
設置要使用提供的編寫器
f
處理的流式查詢的輸出。這通常用於將流式查詢的輸出寫入任意存儲係統。可以通過兩種方式指定處理邏輯。- A 函數將一行作為輸入。
這是一種表達處理邏輯的簡單方法。請注意,當故障導致重新處理某些輸入數據時,這不允許您對生成的數據進行重複數據刪除。這將要求您以下一種方式指定處理邏輯。
- 一個對象與
process
方法和可選open
和close
方法。 該對象可以有以下方法。
open(partition_id, epoch_id)
:可選的初始化處理的方法(例如,打開連接、啟動事務等)。此外,您可以使用
partition_id
和epoch_id
對重新生成的數據進行重複數據刪除(稍後討論)。
process(row)
:非可選處理每個的方法Row
.close(error)
:可選的最終確定和清理的方法(例如,關閉連接、提交事務等)在處理完所有行之後。
Spark 將通過以下方式使用該對象。
- 此對象的單個副本負責由
查詢中的單個任務。也就是說,一個實例負責處理分布式生成的數據的一個分區。
- 這個對象必須是可序列化的,因為每個任務都會得到一個新的
serialized-deserialized 提供對象的副本。因此,強烈建議在調用
open(…)
方法後完成寫入數據的任何初始化(例如打開連接或啟動事務),這表示任務已準備好生成數據。
方法的生命周期如下。
對於每個帶有
partition_id
的分區:…對於每個批次/紀元的流數據
epoch_id
:……。方法
open(partitionId, epochId)
被調用。- ……。如果
open(...)
返回 true,則對於分區中的每一行和 批次/紀元,方法
process(row)
被調用。- ……。調用方法
close(errorOrNull)
時出現錯誤(如果有),而 處理行。
- ……。如果
需要注意的要點:
partitionId
和epochId
可用於在以下情況下對生成的數據進行重複數據刪除故障會導致重新處理某些輸入數據。這取決於查詢的執行模式。如果在micro-batch模式下執行流式查詢,則保證由唯一元組(partition_id,epoch_id)表示的每個分區都具有相同的數據。因此,(partition_id, epoch_id) 可用於重複數據刪除和/或事務性提交數據並實現exactly-once 保證。但是,如果流式查詢以連續模式執行,則此保證不成立,因此不應用於重複數據刪除。
close()
方法(如果存在)將在open()
方法存在並且成功返回(與返回值無關),除非 Python 在中間崩潰。
- 一個對象與
2.4.0 版中的新函數。
注意:
這個 API 正在發展。
例子:
>>> # Print every row using a function >>> def print_row(row): ... print(row) ... >>> writer = sdf.writeStream.foreach(print_row) >>> # Print every row using a object with process() method >>> class RowPrinter: ... def open(self, partition_id, epoch_id): ... print("Opened %d, %d" % (partition_id, epoch_id)) ... return True ... def process(self, row): ... print(row) ... def close(self, error): ... print("Closed with error: %s" % str(error)) ... >>> writer = sdf.writeStream.foreach(RowPrinter())
相關用法
- Python pyspark DataStreamWriter.foreachBatch用法及代碼示例
- Python pyspark DataStreamWriter.format用法及代碼示例
- Python pyspark DataStreamWriter.queryName用法及代碼示例
- Python pyspark DataStreamWriter.outputMode用法及代碼示例
- Python pyspark DataStreamWriter.start用法及代碼示例
- Python pyspark DataStreamWriter.trigger用法及代碼示例
- Python pyspark DataStreamReader.schema用法及代碼示例
- Python pyspark DataStreamReader.text用法及代碼示例
- Python pyspark DataStreamReader.option用法及代碼示例
- Python pyspark DataStreamReader.json用法及代碼示例
- Python pyspark DataStreamReader.parquet用法及代碼示例
- Python pyspark DataStreamReader.orc用法及代碼示例
- Python pyspark DataStreamReader.options用法及代碼示例
- Python pyspark DataStreamReader.load用法及代碼示例
- Python pyspark DataStreamReader.csv用法及代碼示例
- Python pyspark DataStreamReader.format用法及代碼示例
- Python pyspark DataFrame.to_latex用法及代碼示例
- Python pyspark DataFrame.align用法及代碼示例
- Python pyspark DataFrame.plot.bar用法及代碼示例
- Python pyspark DataFrame.to_delta用法及代碼示例
- Python pyspark DataFrame.quantile用法及代碼示例
- Python pyspark DataFrameWriter.partitionBy用法及代碼示例
- Python pyspark DataFrame.cumsum用法及代碼示例
- Python pyspark DataFrame.iloc用法及代碼示例
- Python pyspark DataFrame.dropDuplicates用法及代碼示例
注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.sql.streaming.DataStreamWriter.foreach。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。