为什么Spark SQL在加载过程中添加1 = 0的位置



我对Spark很新。我的任务是通过Denodo数据平台从SQL Server获取3M记录并写入S3。在SQL Server端,这是两个表的联接视图。该视图很耗时。

现在,我试图运行Spark命令为:

val resultDf = sqlContext.read.format("jdbc").option("driver","com.denodo.vdp.jdbc.Driver").option("url", url).option("dbtable", "myview").option("user", user).option("password", password)

我可以看到Spark正在发送查询:

SELECT * FROM myview WHERE 1=0

这部分需要一个多小时。

任何人都可以告诉我为什么在这里附加在此处?

谢谢。

如果我正确理解您的问题,Spark将SELECT * FROM myview WHERE 1=0发送到Denodo服务器。

如果是这种情况,则应通过Denodo检测到该查询是由于不兼容的条件而没有结果的查询,并且应立即执行。您可以尝试在Denodo的VQL Shell(版本6中可用),Denodo的管理工具或任何其他ODBC/JDBC客户端中执行相同的查询,以验证查询甚至不会发送到数据源。也许Spark正在执行该查询以便首先获取输出模式?

您正在使用哪种版本的Denodo?

我看到这是一个旧线程 - 但是我们正在遇到相同的问题 - 但是,它并非全部或所有连接/查询都发生 -

发送

sqoop命令 - AND (1=0) context ('i18n' = 'us_est')添加到某处 - 我们正在使用denodo 7 -JDBC驱动程序com.denodo.vdp.jdbc.Driver

select
   BaseCurrencyCode,BaseCurrencyName,TermCurrencyCode,TermCurrencyName,
   ExchangeAmount,AskRate,BidRate,MidMarketRate,ExchangeRateStartDate,
   ExchangeRateEndDate,RecCreateDate ,LastChangeDate
from 
   CurrencyExchange
WHERE 
  LastChangeDate > '2020-01-21 23:20:15' 
  And LastChangeDate <= '2020-01-22 03:06:19' 
  And (1 = 0) context ('i18n' = 'us_est' )

相关内容

  • 没有找到相关文章