IN子句中的Spark sql限制
Posted
技术标签:
【中文标题】IN子句中的Spark sql限制【英文标题】:Spark sql limit in IN clause 【发布时间】:2019-07-12 07:36:08 【问题描述】:我在spark-sql
中有一个查询,IN 子句中有很多值:
select * from table where x in (<long list of values>)
当我运行此查询时,我从spark
中的MetastoreClient
得到一个TransportException
。
x 列是表的分区列。配置单元元存储在 Oracle 上。
in 子句中可以包含多少个值是否有硬性限制? 或者我可以将超时值设置得更高,以给元存储更多的时间来回答。
【问题讨论】:
我建议从该列表创建数据框并使用连接。这样你就知道有没有其他问题了。 gorros 建议值的数据帧,并广播此数据帧以提高性能。 【参考方案1】:是的,您最多可以在 IN 子句中传递 1000 个值。 但是,您可以在 IN 子句中使用 OR 运算符并将值列表分割成多个 1000 个窗口。
【讨论】:
以上是关于IN子句中的Spark sql限制的主要内容,如果未能解决你的问题,请参考以下文章