Spark SQL не работает с Hive View, когда включена поддержка столбцов Hive Regex - PullRequest
1 голос
/ 12 марта 2019

У нашей команды есть набор Hive QL, поэтому при переходе на spark мы хотим повторно использовать существующий HQL, который использует Hive Спецификация столбца Regex как SELECT `(ds)?+.+` FROM.

Это можно сделать, просто включив следующую конфигурацию:

spark.conf.set('spark.sql.parser.quotedRegexColumnNames', 'true')

Однако, если указанная выше конфигурация включена, запрос любого представления Hive с использованием 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()

Мне было интересно, можно ли сосуществовать в Spark со спецификацией Regex Column и Hive View.

Я наблюдал это поведение в Spark 2.3.0 и 2.4.0

...