azure 当使用blob触发器时,是否有一种方法可以仅在创建.csv文件时执行它,而忽略由pyspark生成的其他文件?

8ljdwjyq  于 2022-12-24  发布在  Spark
关注(0)|答案(1)|浏览(84)

情况如下:

Pyspark正在生成所需的csv格式(零件文件)沿着其他文件,如
_成功”,_已提交”,_已启动”
因此,当这些文件保存在blob存储中时,blob触发器执行4次(添加到blob的文件数)。是否有更好的方法来避免它&仅在生成csv文件时执行blob触发器?

y53ybaqx

y53ybaqx1#

如果您的Blob触发器位于Data factory、逻辑应用程序或Synapse中,您可以按照**@Joel Charan**的建议将.csv作为后缀。

    • 数据工厂Blob触发器示例**

_成功",_已提交",_已启动"
默认情况下,将在spark中创建这些文件。
如果您想避免它们,并且只存储单个csv文件,另一个替代方法将Pyspark Dataframe 转换为pandas Dataframe ,并在挂载后将其存储在单个csv文件中

    • 用于使用日期生成动态csv文件名的代码。**以字符串格式获取当前日期的代码取自this answer by stack0114106
from pyspark.sql.functions import current_timestamp
dateFormat = "%Y%m%d_%H%M"
ts=spark.sql(""" select current_timestamp() as ctime """).collect()[0]["ctime"]
sub_fname=ts.strftime(dateFormat)

filename="/dbfs/mnt/data/folder1/part-"+sub_fname+".csv"
print(filename)

pandas_converted=df.toPandas()
pandas_converted.to_csv(filename)

    • Blob中的单个csv文件:**

相关问题