获取验证失败语义异常'INSERT OVEWRITE'



我正在创建一个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 创建了表,其中字段名称为小写。这解决了我的问题

相关内容

  • 没有找到相关文章

最新更新