sparksql是否支持hive select all查询,但使用regex规范的列除外

hyrbngr7  于 2021-06-26  发布在  Hive
关注(0)|答案(1)|浏览(312)

我正在尝试使用pyspark Package 器使用sparksql实现这个功能

pyspark.sql.utils.AnalysisException: u"cannot resolve '```(qtr)?+.+```' 
    given input columns:

这是我的查询..基本上尝试排除列'qtr'。

select `(qtr)?+.+` from project.table;

在Hive/直线中使用以下属性可以非常好地工作

set hive.support.quoted.identifiers=none;

有什么需要帮忙的吗?

6ss1mwsb

6ss1mwsb1#

spark允许regex作为 SELECT 表情。默认情况下,此行为处于禁用状态。要启用它,我们需要将下面的属性设置为 true 在使用regex列运行查询之前。

spark.sql("SET spark.sql.parser.quotedRegexColumnNames=true").show(false)

设置完这个属性后,我们可以用regex选择表达式,如下所示。

spark.sql("SELECT `(.*time.*)+.+` FROM test.orders limit 2""").show(false)

注意:这里它允许任何java有效的regex。我在spark 2.3中测试过这个解决方案

相关问题