数据块:从数据仓库的临时目录中读取

我正在编写类似以下的函数

def fromdw():
  df=spark.read \
  .format("com.databricks.spark.sqldw")\
  .option("url",myurl) \
  .option("query",sqlquery)\
  .option( "forward_spark_azure_storage_credentials","True")\
  .option("tempdir",mytempurl)\
  .load()
  return df

我可以知道tempdir选项是强制性的吗?我想在没有tempdir的情况下进行读取,因为它很慢,因为它需要先将结果暂存到Blob文件夹中。

ccxygc2008 回答:数据块:从数据仓库的临时目录中读取

是的。将JDBC用于更小,更快的查询。使用用于SQL DW(Synape)的Databricks火花连接器移动大型数据集。该连接器绕过Spark驱动程序节点和Synapse头节点,并且通过将Azure存储用作暂存区域,允许群集在任一方向上并行执行卸载和加载。

已记录here的JDBC,它看起来像这样:

connectionProperties = {
  "user" : user,"password" : pw,"driver" : "com.microsoft.sqlserver.jdbc.SQLServerDriver"
}

pushdown_query = "(select * from whatever) q"
df = spark.read.jdbc(url=jdbcUrl,table=pushdown_query,properties=connectionProperties)
display(df)

(请注意,如何包装SELECT才能使用查询而不是表名)。

本文链接:https://www.f2er.com/2908728.html

大家都在问