如何在 Hive 中重命名分区值?

2023-12-24

我有一个配置单元表“videotracking_playevent”,它使用以下分区格式(所有字符串):source/createyear/createmonth/createday。 示例:source=home/createyear=2016/createmonth=9/createday=1

我正在尝试更新 createmonth 和 createday 的分区值以始终使用两位数。 示例:source=home/createyear=2016/createmonth=09/createday=01

我尝试过以下查询:

ALTER TABLE videotracking_playevent PARTITION (
source='home', 
createyear='2015', 
createmonth='11', 
createday='1'
) RENAME TO PARTITION (
source='home', 
createyear='2015', 
createmonth='11', 
createday='01'
);

但是,这会从配置单元返回以下非描述性错误:Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. null

我已经确认该分区存在,并且我认为我使用了正确的语法。我的hive版本是Hive 1.1.0 有什么想法我可能做错了什么吗?


旧版本的 Hive 重命名分区时出现问题。对于您的案例来说,这也可能是一个问题。请看这个link https://community.hortonworks.com/questions/8377/how-to-rename-partition-value-in-hive.html详细信息。

如果您使用的是旧版本的 Hive,则在执行重命名分区命令之前,您需要设置以下两个属性。

set fs.hdfs.impl.disable.cache=false; 
set fs.file.impl.disable.cache=false; 

现在通过设置此属性来运行查询。

hive> set fs.hdfs.impl.disable.cache=false;
hive> set  fs.file.impl.disable.cache=false;
hive> ALTER TABLE partition_test PARTITION (year='2016',day='1') RENAME TO PARTITION (year='2016',day='01');
OK
Time taken: 0.28 seconds
hive> show partitions partition_test;
OK
year=2016/day=01
Time taken: 0.091 seconds, Fetched: 1 row(s)
hive>

该问题已在 Hive 最新版本中修复。在我的例子中,Hive 版本是 1.2.1 并且它可以工作,无需设置该属性。请看下面的例子。

创建分区表。

hive> create table partition_test(
    > name string,
    > age int)
    > partitioned by (year string, day string);
OK
Time taken: 5.35 seconds
hive> 

现在添加分区并检查新添加的分区。

hive> alter table partition_test ADD PARTITION (year='2016', day='1');
OK
Time taken: 0.137 seconds
hive>


hive> show partitions partition_test;
OK
year=2016/day=1
Time taken: 0.169 seconds, Fetched: 1 row(s)
hive>

使用重命名分区RENAME TO PARTITION命令并检查它。

hive> ALTER TABLE partition_test PARTITION (year='2016',day='1') RENAME TO PARTITION (year='2016',day='01');
OK
Time taken: 0.28 seconds
hive> show partitions partition_test;
OK
year=2016/day=01
Time taken: 0.091 seconds, Fetched: 1 row(s)
hive>

希望对您有帮助。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Hive 中重命名分区值? 的相关文章

随机推荐

  • __init__ 的目的

    我读了一些书 但无法像我想的那样完全理解这一点 我正在从 LPTHW 教程中制作一个 选择你自己的冒险 小游戏 这是完整的脚本 http codepad org YWVUlHnU http codepad org YWVUlHnU 我不明白
  • 在Python中计算modbus的CRC16

    首先 抱歉 我是初学者 我在 modbus 上得到以下字节序列 01 04 08 00 00 00 09 00 00 00 00f8 0c 该字节序列上粗体的 CRC 是正确的 但是 要检查 创建 CRC 我必须遵循设备规范 其中规定 错误
  • 什么是段以及如何在 8086 模式下寻址它们?

    自从我开始使用 8086 汇编语言编程以来 我一直在思考这些段和段寄存器 我面临的问题是 我无法对脑海中的片段有一个直观的图像 因此我不清楚这些概念 谁能帮我理解这个概念将其与现实世界场景联系起来 我还有以下问题 问题一 据我了解 在启用2
  • ColdFusion jvm 垃圾收集不

    我有一个 cfc 方法 它循环遍历列表并通过 cfhttp 进行一系列 SOAP 调用 然后将结果插入数据库 该过程本身工作得很好 问题是java内存慢慢填满 最终 取决于返回的记录中的元素数量 停止工作 没有错误或任何可见的东西它就停止了
  • 打开 pdf 时出现 MUPDF UnsupportedOperationException

    我正在将 MUPDF 用于 Android 项目 但一些 Android 用户遇到了问题 我得到的报告如下 java lang UnsupportedOperationException Not supported E AndroidRun
  • Matlab - 周围元素的总和

    我想计算矩阵中给定元素周围元素的总和 到目前为止 我已经编写了以下几行代码 for i 1 m rij 1 n 0 for j 1 n alive tijdelijk i 1 j tijdelijk i 1 j tijdelijk i 1
  • 创建一个只有两个圆角边缘的矩形

    我可以创建一个所有边缘均为圆形的矩形形状 然而 我想要的是一个矩形 只有两个边缘是圆形的 这可能吗 我本质上是在拼凑一个 ListView 它看起来像一个带有圆形边缘的气泡 我希望添加一个两个顶部边缘呈圆形的页眉和一个两个底部边缘呈圆形的页
  • jQuery 日期选择器首先选择年份,然后选择月份

    需要进行哪些更改才能首先显示 年份 下拉列表 然后将 月份 下拉列表显示为 jQuery 中的第二个字段 以便用户可以选择自己的出生年份 然后选择该年的月份 我们仍然希望限制日历不能显示大于今天的日期 如果用户选择 2011 年 则不应允许
  • 如何计算bigquery数组字段中元素的频率

    我有一个看起来像这样的表 我正在寻找一个表 该表给出字段中元素的频率计数l 0 l 1 l 2 l 3 例如 输出应如下所示 author id year l o name l 0 count l1 name l1 count l2 nam
  • 来自 java android 的图像序列的视频编码[重复]

    这个问题在这里已经有答案了 我想仅在我当前的 android 项目中使用 java 对图像序列中的视频进行编码 我的意思是不使用任何外部工具 例如 NDK 另外 是否有可用的 java 库用于从图像序列编码视频 您可以使用名为 JCodec
  • 在哪里可以找到可用于扫描和 OCR 文档的免费 .Net (C#) 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个免费的 Net C 库 我可以使用该库从文档扫描仪进行扫描 然后对文档进行 OCR 这样我就可以从中获取文本并将其保存在数据
  • 如何在不使用 SQL 查询表的情况下选择过去 12 个月的名称和年份?

    我如何使用当前时间选择最近 12 个月的名称 不使用任何表格 如果当前月份是十月那么我想要的结果是 month year oct 2011 nov 2011 dec 2011 jan 2012 feb 2012 mar 2012 apr 2
  • Android - 无法执行 dex:定义了多个 dex 文件

    我尝试运行我的 Android 应用程序 但收到此错误 2014 03 11 11 21 34 Dex Loader Unable to execute dex Multiple dex files define Lorg apache c
  • CSS 级联顺序 - 作者与用户[重复]

    这个问题在这里已经有答案了 按优先级升序排列 用户代理声明 用户正常声明 作者正常声明 作者重要声明 用户重要声明 CSS 规范定义author and user as Author 作者根据文档语言的约定为源文档指定样式表 例如 在 HT
  • 如何使用 API 删除 GitHub 存储库

    我正在熟悉 GitHub APIhttp developer github com v3 http developer github com v3 我正在尝试使用 Firefox 的 RESTClient 插件和curl 命令行工具 我已经
  • 连接 JS 客户端和 Python 服务器

    我对 JS 和 Python 比较陌生 所以这可能是一个初学者的问题 我正在尝试将字符串从 JS 客户端发送到 Python 服务器 然后将该字符串发送到另一个 Python 客户端 这是我的代码 JS客户端 var socket io c
  • 如何检测客户端机器是否已经安装了JRE版本?

    在应用程序中 我们为客户端提供选择是否使用 JRE 下载我们的应用程序的功能 如果可以检测客户端系统是否已经配置了 JRE 则可以以更加用户友好的方式提供此功能 如果您想限制测试以检查是否安装了 JREand在路径上 只需检查环境变量PAT
  • Laravel 调用未定义方法 App\\ Model ::mapInto()、vendor\\laravel\\framework\\src\\Illuminate\\Support\\Traits\\ForwardsCalls.php

    我试图 public function show Product product return ProductDetailResource collection product 调用未定义的方法App Model mapInto 异常 Ba
  • 通过 pybind11 返回 numpy 数组

    我有一个 C 函数计算一个大张量 我想通过它作为 NumPy 数组返回到 Pythonpybind11 https github com pybind pybind11 从 pybind11 的文档来看 似乎使用STL unique ptr
  • 如何在 Hive 中重命名分区值?

    我有一个配置单元表 videotracking playevent 它使用以下分区格式 所有字符串 source createyear createmonth createday 示例 source home createyear 2016