Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache spark 启用配置单元正则表达式列支持时,Spark SQL不适用于配置单元视图_Apache Spark_Pyspark_Apache Spark Sql_Pyspark Sql - Fatal编程技术网

Apache spark 启用配置单元正则表达式列支持时,Spark SQL不适用于配置单元视图

Apache spark 启用配置单元正则表达式列支持时,Spark SQL不适用于配置单元视图,apache-spark,pyspark,apache-spark-sql,pyspark-sql,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Sql,我们的团队拥有大量的配置单元QL,因此在迁移到spark时,我们希望重用现有的HQL,它使用类似于选择`(ds)?+。+` FROM的配置单元 只需启用以下配置即可完成此操作: spark.conf.set('spark.sql.parser.quotedRegexColumnNames', 'true') 但是,在启用上述配置的情况下,使用Spark SQL查询任何配置单元视图都会失败,Spark SQL Analyzer会抱怨 pyspark.sql.utils.AnalysisExcep

我们的团队拥有大量的配置单元QL,因此在迁移到spark时,我们希望重用现有的HQL,它使用类似于
选择`(ds)?+。+` FROM
的配置单元

只需启用以下配置即可完成此操作:

spark.conf.set('spark.sql.parser.quotedRegexColumnNames', 'true')
但是,在启用上述配置的情况下,使用Spark SQL查询任何配置单元视图都会失败,Spark SQL Analyzer会抱怨

pyspark.sql.utils.AnalysisException: u"Invalid usage of '*' in expression 'unresolvedextractvalue';"
复制问题的简单pyspark脚本如下所示:

from pyspark.sql import SparkSession

def main():
    spark = SparkSession.builder.appName('test_spark').enableHiveSupport().getOrCreate()
    spark.conf.set('hive.exec.dynamic.partition.mode', 'nonstrict')
    spark.conf.set('spark.sql.sources.partitionOverwriteMode','dynamic')
    spark.conf.set('spark.sql.parser.quotedRegexColumnNames', 'true')

    spark_sql = r'''
    SELECT
        id_listing
    FROM
        <A Hive View>
    WHERE
        ds = '2019-03-09'
'''
    result = spark.sql(spark_sql)
    print(result.count())

if __name__ == '__main__':
    main()
从pyspark.sql导入SparkSession
def main():
spark=SparkSession.builder.appName('test_spark')。enableHiveSupport().getOrCreate()
spark.conf.set('hive.exec.dynamic.partition.mode','nonstrict')
spark.conf.set('spark.sql.sources.partitionOverwriteMode','dynamic')
spark.conf.set('spark.sql.parser.quotedRegexColumnNames','true')
spark_sql=r''
挑选
id_列表
从…起
哪里
ds='2019-03-09'
'''
结果=spark.sql(spark\u sql)
打印(result.count())
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
main()
我想知道是否有办法使正则表达式列规范和配置单元视图在Spark中共存


我在Spark 2.3.0和2.4.0中都观察到了这种行为

您是否尝试过一个简单的查询,并看到它在这里工作?只有正则表达式不起作用?@jimt奇偶对配置单元视图(如
SELECT id\u listing FROM
)的简单查询不起作用,您可以在SQL中看到,我没有在SELECT子句中使用正则表达式列规范。您是否尝试过简单的查询,并看到它在这里起作用?只有正则表达式不起作用?@jimt奇偶简单查询配置单元视图,如
SELECT id\u listing FROM
不起作用,您可以在SQL中看到,我没有在SELECT子句中使用正则表达式列规范。