我面临一个奇怪的情况,其中插入覆盖查询不会对包含其名称中有空格的列的表执行任何错误 . 以下是没有错误的查询:

创建表TEST_PART(col1STRING)分区(col2 STRING)存储为PARQUET; set hive.exec.dynamic.partition.mode = nonstrict;设置hive.exec.max.dynamic.partitions = 2500; INSERT OVERWRITE TABLE TEST_PART PARTITION(col2)选择'test'为col1,'test2'为col2;

没有分区的类似表会导致抛出AnalysisException,说“属性名称”col1“包含”,; {}()\ n \ t =“中的无效字符 . 请使用别名重命名 . '' . 以下是一组查询:

创建表测试(col1STRING,col2 STRING)存储为PARQUET; INSERT OVERWRITE TABLE TEST选择'test'为col1,'test2'为col2;

但是,我在针对TEST_PART表运行select *时遇到了AnalysisException . 对于TEST,插入覆盖查询本身错误输出 . 知道为什么会这样吗?

我们正在使用Spark 2.0.0 . Spark 2.2.1中也注意到了相同的行为 .