Hadoop 如何更新配置单元orc表的架构?

Hadoop 如何更新配置单元orc表的架构?,hadoop,hive,apache-spark-sql,pyspark-sql,orc,Hadoop,Hive,Apache Spark Sql,Pyspark Sql,Orc,我创建了一个以orc格式存储的配置单元外部表 create external table test (first_name string, last_name string) partitioned by (year int, month int) stored as orc location "\usr\tmp\orc_files' 然后我将一些数据插入该位置。 当我对这个表执行select查询时,我得到了正确的结果 接下来,我使用以下命令向表中添加了一个新列: alter table t

我创建了一个以orc格式存储的配置单元外部表

create external table test
(first_name string,
last_name string)
partitioned by (year int, month int) 
stored as orc location "\usr\tmp\orc_files'
然后我将一些数据插入该位置。 当我对这个表执行select查询时,我得到了正确的结果

接下来,我使用以下命令向表中添加了一个新列:

alter table test add columns(middle_name string);
现在,当我试着去做

select * from test;
我得到一个错误:

17/05/25 11:52:23 INFO ParseDriver: Parsing command: select * from test
17/05/25 11:52:23 INFO ParseDriver: Parse Completed
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/hdp/2.5.0.0-1245/spark/python/pyspark/sql/context.py", line 580, in sql
    return DataFrame(self._ssql_ctx.sql(sqlQuery), self)
  File "/usr/hdp/2.5.0.0-1245/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py", line 813, in __call__
  File "/usr/hdp/2.5.0.0-1245/spark/python/pyspark/sql/utils.py", line 45, in deco
    return f(*a, **kw)
  File "/usr/hdp/2.5.0.0-1245/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py", line 308, in get_return_value
py4j.protocol.Py4JJavaError: An error occurred while calling o55.sql.
: java.lang.AssertionError: assertion failed
        at scala.Predef$.assert(Predef.scala:165)
        at org.apache.spark.sql.execution.datasources.LogicalRelation$$anonfun$1.apply(LogicalRelation.scala:39)
17/05/25 11:52:23信息解析驱动程序:解析命令:从测试中选择*
17/05/25 11:52:23信息解析驱动程序:解析已完成
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
sql中的文件“/usr/hdp/2.5.0.0-1245/spark/python/pyspark/sql/context.py”,第580行
返回数据帧(self.\u ssql\u ctx.sql(sqlQuery),self)
文件“/usr/hdp/2.5.0.0-1245/spark/python/lib/py4j-0.9-src.zip/py4j/java_gateway.py”,第813行,在__
文件“/usr/hdp/2.5.0.0-1245/spark/python/pyspark/sql/utils.py”,第45行,deco格式
返回f(*a,**kw)
文件“/usr/hdp/2.5.0.0-1245/spark/python/lib/py4j-0.9-src.zip/py4j/protocol.py”,第308行,在get\u返回值中
py4j.protocol.Py4JJavaError:调用o55.sql时出错。
:java.lang.AssertionError:断言失败
在scala.Predef$.assert处(Predef.scala:165)
位于org.apache.spark.sql.execution.datasources.LogicalRelation$$anonfun$1.apply(LogicalRelation.scala:39)

有人能帮我吗?为什么我无法更改orc表的架构?

您是否在spark之外尝试了相同的查询?是的,我刚刚在beeline中运行了alter table命令,它完成得很好。但是当我做一个select*时,我得到了一个错误。我认为这个错误是因为orc格式。当我使用avro格式时,一切正常。仅供参考,一旦我添加了新列,show create table命令会将表显示为textformat而不是orc格式。我不知道为什么。我最近没有修改兽人的桌子,所以我不知道