Databricks环境PySpark导出CSV上传SharePoint无数据问题求助
问题原因
你代码的问题出在pandasdf.to_csv()方法的调用逻辑上:
当你给to_csv()传入第一个参数为文件名时,该方法会直接将CSV内容写入本地磁盘的对应文件,返回值为None。你把None传递给folder.upload_file()接口,自然会导致上传的SharePoint文件没有内容。
修正方案
方案1:直接传递CSV字符串(推荐,无需额外写本地文件)
把最后一行的to_csv调用去掉文件名参数,让方法直接返回CSV格式的字符串内容即可,同时可以加index=False避免导出多余的行索引列:
# 替换原最后一行代码即可 folder.upload_file(pandasdf.to_csv(encoding='utf-8', index=False), FileName)
方案2:先写入本地文件再上传
如果你需要同时在Databricks本地保留CSV文件,也可以先写入本地再读取文件内容上传:
# 先写入本地文件 pandasdf.to_csv(FileName, encoding='utf-8', index=False) # 读取本地文件内容后上传 with open(FileName, 'rb') as f: folder.upload_file(f.read(), FileName)
注意事项
如果你的查询结果数据量非常大,直接调用df.toPandas()可能会触发Driver节点的内存溢出,此时建议先将Spark DataFrame分片导出再合并上传。
内容的提问来源于stack exchange,提问作者Toasty
相关产品推荐
相关产品推荐

