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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。