Databricks中DataFrame无write属性报错:无法写入数据库表
出现AttributeError: 'DataFrame' object has no attribute 'write'的核心原因是你当前的df并非PySpark DataFrame,而是其他类型的对象,下面是具体排查和解决方法:
先确认
df的实际类型
运行print(type(df)),如果输出是pandas.core.frame.DataFrame,说明合并操作后得到的是Pandas DataFrame——Pandas的DataFrame没有write属性,只有PySpark的DataFrame才支持write.saveAsTable操作。
解决办法:把Pandas DataFrame转成PySpark DataFrame:df = spark.createDataFrame(df) # 再执行写入操作 df.write.saveAsTable("dashboardco.AccountList")检查是否存在变量名冲突
有可能你之前定义了同名的普通变量(比如列表、字典或者字符串)覆盖了原本的PySpark DataFrame。直接打印df看看内容,如果不是表格结构,就说明变量被覆盖了,重新生成正确的DataFrame即可。确认笔记本内核类型
如果你当前用的是纯Python内核(不是PySpark内核),那么默认创建的是Pandas DataFrame,而且没有初始化Spark会话。切换到PySpark内核,重新运行合并和写入代码即可。检查合并操作的方法
如果你用了Pandas的pd.concat或者其他Pandas合并方法,会得到Pandas DataFrame。改成用PySpark的合并方法:比如unionByName(合并同结构DF)、join(关联DF),确保得到的是PySpark DataFrame。
内容的提问来源于stack exchange,提问作者drewbeno

