【问题标题】:Unable to alter partition location in hive无法更改配置单元中的分区位置
【发布时间】:2016-07-28 18:32:17
【问题描述】:

我正在尝试更改外部配置单元表的分区位置。

我尝试运行的命令:

ALTER TALBE sl_uploads PARTITION (hivetimestamp='2016-07-26 15:00:00') SET LOCATION '/data/dev/event/uploads/hivetimestamp=2016-07-26 15:00:00'

我得到的错误:

FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.net.URISyntaxException: Illegal character in path

我的特定分区的数据存在于路径中:

/data/dev/event/uploads/hivetimestamp=date time/actual_data

我认为空间正在制造一个问题。但是这方面的任何帮助都会很棒。

【问题讨论】:

  • 尝试使用 \ 转义空间:SET LOCATION '/data/dev/event/uploads/hivetimestamp=2016-07-26\ 15:00:00'
  • 不,这不起作用。它仍然给出同样的错误。为了跳过空格字符,我之前尝试过。

标签: hadoop hive hadoop-partitioning


【解决方案1】:

您的路径中的 hdfs 是否正确?

添加 /actual_data/?

【讨论】:

    【解决方案2】:

    由于“2016-07-26 15:00:00”中有空格,Hive 无法读取完整的 hdfs 路径; 您可以使用以下命令;

    hive> set part=2016-07-26 15:00:00;
    hive>ALTER TALBE sl_uploads PARTITION (hivetimestamp='2016-07-26 15:00:00') SET LOCATION '/data/dev/event/uploads/hivetimestamp=@part';
    

    【讨论】:

    • 它设置部件并更改分区位置,但是当我从 hivetimestamp='2016-07-26 15:00:00' 的 sl_uploads 运行 select count(*) 时,它不起作用。它给出了错误:FAILED: SemanticException java.io.FileNotFoundException: File hdfs://data/dev/event/uploads/hivetimestamp=@part 不存在。
    【解决方案3】:

    我看到的第一件事是,你写的是 TALBE 而不是 TABLE。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-03
      相关资源
      最近更新 更多