apache-spark - 截断数据块上的表
问题描述
我在 Azure 中使用两种环境:Databricks 和 SQL 数据库。我正在使用一个生成数据框的函数,该数据框将用于覆盖存储在 SQL 数据库中的表。我有很多问题,因为 df.write.jdbc(mode = 'overwrite') 只删除表,我猜,我的用户没有正确的权限再次创建(我已经看到了 DML 和我需要这样做的 DDL 权限)。在简历中,我的函数只会删除表,但不会再次重新创建。
我们讨论了可能是什么问题,我们得出结论,也许我能做的最好的事情就是截断表格并在那里重新添加新数据。我试图找到如何截断表格,我尝试了这两种方法,但我找不到与此相关的更多信息:
df.write.jdbc()
&
spark.read.jdbc()
你能帮我解决这些问题吗?覆盖不起作用(也许我没有足够的权限)并且我不知道如何使用 jdbc 截断该表。
解决方案
它在Spark 文档中- 您需要truncate
在编写时添加:
df.write.mode("overwrite").option("truncate", "true")....save()
此外,如果您有大量数据,那么最好使用Microsoft 的用于 SQL Server 的 Spark 连接器- 它具有一些性能优化,应该允许更快地写入。
推荐阅读
- reactjs - 使用 react js 和 antmedia 进行直播
- javascript - React Fetch Google Cloud Function http cors req.method OPTIONS, POST
- javascript - javascript添加数字
- qt - 用新值刷新 QTableWidget
- python - 如何用 python 绘制 3d 数据?(不仅仅是绘制表面)
- python - 如何在不同的 (SNMPv3) 上下文中注册 MIB 模块。在 SNMP 代理端
- android - 用于分析当前屏幕并以编程方式执行触摸事件的叠加应用程序
- c# - 自定义集合的 NotSupportedException
- powerbi - Show or Preview default 30 days of data until user select date range from slicer
- linux - 如何从同一终端中停止正在运行的 Docker 容器?