我正在尝试使用sqlspark连接器从带有azuredatabricks的azuresql中提取数据。我已经在集群上安装了maven库,并在databricks上成功运行了以下脚本,以从示例数据库中提取:
server_name = "jdbc:sqlserver://(removed).database.windows.net"
database_name = (removed)
url = server_name + ";" + "databaseName=" + database_name + ";"
table_name = "dbo.Test"
username = (removed)
password = (removed)
jdbcDF = spark.read \
.format("com.microsoft.sqlserver.jdbc.spark") \
.option("url", url) \
.option("dbtable", table_name) \
.option("user", username) \
.option("password", password) \
.load()
display(jdbcDF)
但是,我希望最终使用这个连接器从一个大表(5 mil+行)中提取数据,并希望向.read方法添加一个过滤器,以减少需要提取的行数,从而节省处理能力和Dataframe大小。理想情况下,我也希望只提取特定的列,但行是优先顺序。
查看可用的pyspark文档,似乎没有泛型的.filter属性,sql spark connector文档也没有指定有助于过滤请求的可用.option键。我假设没有好的方法来减少数据拉取,但请纠正我,如果有。
我可能会在查询之后立即从Dataframe中删除不必要的列和行,以帮助提高成本和性能。如果有其他想法要考虑,请告诉我!
1条答案
按热度按时间0h4hbjxa1#
传递将执行的包含筛选器的查询。例如
从https://docs.databricks.com/data/data-sources/sql-databases.html 应该有帮助。