在 Hive CLI

问题描述

我有一个 Spark 作业 (Scala),它将时间序列数据写入 Hadoop,Hive 中有一个外部表。

该表由多列分区,其中一列 (circle) 的值中有空格(例如 "Punjab and Rajasthan")。

在我尝试做的火花工作中

sparksession.sql("""
alter table table_name 
drop if exists partition(creation_time < latestcreationtime)
"""
)

我收到 hive metastore 的非法字符异常,附加了堆栈跟踪。我在 Hive CLI 中得到相同的结果,看起来 Hive 无法读取空格。

用户类抛出异常:org.apache.spark.sql.AnalysisException: org.apache.hadoop.hive.ql.Metadata.HiveException: MetaException(message:Illegal character in path at index 131: /user/optimus/rohit/hive_dump/c360/version=v1.28/set_name=d_si/creation_time=1610994976/compaction_flag=U/si_lob=DTH/circle=Andaman 和尼科巴群岛);

解决方法

1.尝试删除并重新创建表 2.你的数据可能有问题,底层数据类型和表类型是什么?