databricks从azure sql触发条件拉取

fnvucqvd  于 2021-05-22  发布在  Spark
关注(0)|答案(1)|浏览(526)

我正在尝试使用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中删除不必要的列和行,以帮助提高成本和性能。如果有其他想法要考虑,请告诉我!

0h4hbjxa

0h4hbjxa1#

传递将执行的包含筛选器的查询。例如

...
...
pushdown_query = "(select * from employees where emp_no < 10008) emp_alias"
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, 
properties=connectionProperties)
display(df)
...

从https://docs.databricks.com/data/data-sources/sql-databases.html 应该有帮助。

相关问题