我正在创建一个DataFrame
并使用df.createOrReplaceTempView('mytable')
将该数据帧注册为temp
视图。之后,我尝试使用以下查询将'mytable'
的内容写入Hive表(它有分区(
insert overwrite table
myhivedb.myhivetable
partition(testdate) // ( 1) : Note here : I have a partition named 'testdate'
select
Field1,
Field2,
...
TestDate //(2) : Note here : I have a field named 'TestDate' ; Both (1) & (2) have the same name
from
mytable
当我执行此查询时,我收到以下错误
Exception in thread "main" org.apache.hadoop.hive.ql.metadata.Table$ValidationFailureSemanticException: Partition spec
{testdate=, TestDate=2013-01-01}
看起来我收到此错误是因为相同的字段名称;即testdate
(Hive中的分区(和TestDate
(临时表"mytable"中的字段(
而如果我的分区名testdate
与字段名(即TestDate
(不同,则查询会成功执行。例。。。
insert overwrite table
myhivedb.myhivetable
partition(my_partition) //Note here the partition name is not 'testdate'
select
Field1,
Field2,
...
TestDate
from
mytable
我的猜测是它看起来像火花中的错误......但想有第二意见...我在这里错过了什么吗?
@DuduMarkovitz @dhee ; 抱歉回复太晚。我终于能够解决问题了。早些时候,我使用 cameCase(在 CREATE 语句中(创建表,这似乎是异常的原因。现在我已经使用 DDL 创建了表,其中字段名称为小写。这解决了我的问题