如何改变默认的'覆盖'行为上的' DataFrame



我想覆盖SQL表的内容。目前Spark的行为是删除表,然后创建一个新的,当我使用overwrite -模式。由于限制权限,我不能这样做。当前的解决方案是使用另一个Python包来清理表,然后将数据帧写入SQL-DB。这似乎是错误的。

有办法改变这种行为吗?

请参阅此处查看所使用函数的文档。

# Usage example (current state)
# Pre: Clear table.
df.write.jdbc(url=url, table="baz", mode='overwrite, properties=properties)

我刚刚遇到了类似的问题,结果发现截断JDBC表从Spark 2.1.0开始就可用了。

要启用截断,需要设置mode='overwrite'并在属性中添加额外的键:

properties['truncate'] = 'true'
df.write.jdbc(url=url, table="baz", mode='overwrite', properties=properties)

最新更新