我想加载以“Products”开头的特定文件,但“Products_expired”除外 因为“产品”之后会有日期戳,例如:Products_202410。现在通配符将读取链接内的所有文件,我想过滤掉Products_expired。这两个文件都有超过 1 亿行,加载文件后使用 input_file_name() 获取名称会很昂贵。
此外,如果文件路径有多个文件,例如:Products_202409、Products_202410、Products_202411、Products_expired_202409、Products_expired_202410...我只想摄取 3 个文件:Products_202409、Products_202410、Products_202411,使用 Spark 技术(优化),无需昂贵的 forloops /附加函数。
如果spark.read.load("abfss://[email protected]/data/testing/PRODUCTS_Expired_.csv")包含“过期”:
mssparkutils.notebook.exit(send_email("[电子邮件受保护]", "已过期", "失败"))
其他:
df = Spark.read.load("abfss://[电子邮件受保护]/data/testing/PRODUCTS_.csv")
解决方案供参考
在数据块上你可以做这样的事情
pathh="dbfs:/FileStore/test_only/check"
new_list=[]
for x in dbutils.fs.ls(pathh):
print(x[0])
if ('Products' in x[0]) & (~('expired' in x[0])):
new_list.append(x[0])
df=spark.read.csv(new_list[0:3])