我想发送一些传入文件以进行火花处理。通过看门狗on_created事件,我可以在创建文件名后立即获取它。但是,文件每4-5分钟成捆分发。例如(9.30 ---> 3个文件)(9.34 ---> 7个文件)(9.39 ---> 4个文件)。
使用看门狗库,我能够将文件名捕获到一个列表中,该列表将传递给spark以处理为数据帧。
filenames=list()
class CustomFileEventHandler(FileSystemEventHandler):
def on_created(self, event):
global timestamp
file_name = event.src_path
timestamp = time.time()
filenames.append(os.path.abspath(file_name))
while True:
if time.time() - timestamp > 30:
process(filenames)
def process(filenames):
# reset the filenames list
# join files into one dataframe
# process dataframe
我要执行的步骤是:
创建文件后,将其添加到文件名列表中。
如果在过去30秒钟内未创建任何文件,请将列表中的所有文件名发送出去,
如何在不锁定程序的情况下完成此操作?