我对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' )