在写入数据帧之前从 table 中删除记录 - pyspark
Delete records from table before writing dataframe - pyspark
我试图从我的 table 中删除记录,然后再将数据从数据帧写入它。它对我不起作用...我做错了什么?
Goal: "delete from xx_files_tbl" before writing new dataframe to table.
query = "(delete from xx_files_tbl)"
spark.write.format("jdbc")\
.option("url", "jdbc:sqlserver://"+server+":1433;databaseName="+db_name)\
.option("driver", driver_name)\
.option("dbtable", query)\
.option("user", user)\
.option("password", password)\
.option("truncate", "true")\
.save()
谢谢。
您可以直接使用 .mode("overwrite") 和 .option("truncate",true ).
https://docs.microsoft.com/en-us/sql/big-data-cluster/spark-mssql-connector?view=sql-server-ver15
您不能删除数据,因为数据帧是不可变的。您可以执行过滤操作并创建新的数据框并写入您的 location.Something 我认为这会对您有所帮助。
newdf=spark.sql("select * 来自 xx_files_tbl WHERE 值 <= 1")
Spark 文档说 dbtable
用于传递应该读取或写入的 table。 FROM
子句只能在使用 JDBC 连接器读取数据时使用。 (资源:https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html)
我的建议是要么使用overwrite
写入模式,要么打开一个单独的连接来删除数据。数据删除和连接到 MySQL 服务器不需要 Spark。使用 Python MySQL
连接器或打开单独的 jdbc 连接就足够了。
我试图从我的 table 中删除记录,然后再将数据从数据帧写入它。它对我不起作用...我做错了什么?
Goal: "delete from xx_files_tbl" before writing new dataframe to table.
query = "(delete from xx_files_tbl)"
spark.write.format("jdbc")\
.option("url", "jdbc:sqlserver://"+server+":1433;databaseName="+db_name)\
.option("driver", driver_name)\
.option("dbtable", query)\
.option("user", user)\
.option("password", password)\
.option("truncate", "true")\
.save()
谢谢。
您可以直接使用 .mode("overwrite") 和 .option("truncate",true ).
https://docs.microsoft.com/en-us/sql/big-data-cluster/spark-mssql-connector?view=sql-server-ver15
您不能删除数据,因为数据帧是不可变的。您可以执行过滤操作并创建新的数据框并写入您的 location.Something 我认为这会对您有所帮助。
newdf=spark.sql("select * 来自 xx_files_tbl WHERE 值 <= 1")
Spark 文档说 dbtable
用于传递应该读取或写入的 table。 FROM
子句只能在使用 JDBC 连接器读取数据时使用。 (资源:https://spark.apache.org/docs/latest/sql-data-sources-jdbc.html)
我的建议是要么使用overwrite
写入模式,要么打开一个单独的连接来删除数据。数据删除和连接到 MySQL 服务器不需要 Spark。使用 Python MySQL
连接器或打开单独的 jdbc 连接就足够了。