我正在从SQL Server的表中读入Databricks。源SQL表包含约5000万行。阅读时,我正在选择一个客户端,如下所示:
table1 = "(select Client, Revenue from dbo.sqltable where Client in ('0000000001')) A"
df = spark.read.options(user=user, password=pswd, columnEncryptionSetting='Enabled') \
.jdbc('jdbc:sqlserver://' + sqlserver + ':' + port + '; database=' + database, table1)
当我df.show()
显示结果时,我可以看到该表,但是要花一分钟多的时间才能处理400行(!)。我以为这可能是因为源表太大了,即使我预先过滤了df,.show()
仍在原始50M行df上工作。如果是这种情况,我如何在采样的df上将处理降低到0.1秒,这是我期望在400行df上使用.show()
的结果(这是我们在20k的开发集群上得到的结果行)?我试图为采样的df创建一个临时视图,以查看这是否有所不同,但我不知道自己是否走在正确的轨道上:
df.createOrReplaceTempView('dftmp')
spark.table("dftmp")
spark.table("dftmp").cache
spark.table("dftmp").count
我所得到的是:
<bound method DataFrame.count of DataFrame[Client: string, Revenue: decimal(17,2)]>
我从这里得到了上面的内容:how-does-createorreplacetempview-work-in-spark