来自pyspark数据帧的样本处理缓慢

时间:2019-02-06 10:16:39

标签: apache-spark databricks

我正在从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

0 个答案:

没有答案