这是我之前提出的问题的扩展:是否可以更改HIVE中的分区元数据?
我们正在探索更改表上元数据的想法,而不是对SELECT语句中的数据执行CAST操作。更改MySQL
Metastore中的元数据非常容易。但是,是否有可能将元数据更改应用于分区表(每天)上的列?注意:该列本身不是分区列。这是一个简单的ID字段,正在从STRING更改为BIGINT。
否则,当历史记录为STRING时,我们可能会停留在当前和将来的数据为BIGINT类型的情况下。
问题: 是否可以在Hive中更改分区元数据?如果是,怎么办?
注意:我将其作为一个单独的问题进行询问,因为原始答案似乎是针对分区表中的一列,该表也是分区列。所以,我不想弄混水域。
更新:
我运行了ALTER TABLE .. CHANGE COLUMN ... CASCADE
命令,但是出现以下错误:
处理语句时出错:失败:执行错误,从org.apache.hadoop.hive.ql.exec.DDLTask返回代码1。不允许更改具有外部架构的Avro存储表的架构。考虑从表属性中删除avro.schema.literal或avro.schema.url。
元数据存储在单独的avro文件中。我可以确认更新的元数据在avro文件中,而不在单个分区文件中。
注意:该表存储为EXTERNAL。
您可以轻松更改列类型:
使用Hive中的alter table,将类型更改为STRING,等等:
alter table table_name change column col_name col_name string cascade; --change to string
请参阅文档。
ALTER TABLE CHANGE COLUMN
withCASCADE
命令更改表的元数据的列,并将相同的更改级联到所有分区元数据。
另外,您也可以像下面的答案一样重新创建表:https :
//stackoverflow.com/a/58299056/2700344
问题内容: 在Python中,是否可以在运行时重新定义函数的默认参数? 我在这里定义了带有3个参数的函数: 接下来,我尝试(未成功)设置y的默认参数值,然后尝试调用不带参数的函数: 但是由于未正确设置默认值,所以产生了以下错误: 正如我在此尝试的那样,是否可以在运行时重新定义函数的默认参数? 问题答案: 只需使用functools.partial 这里的一个问题:您将无法调用它,因为您应该手动说
我们在cloudfoundry使用flyway。简而言之,我们无法控制数据库的用户名/密码(根据设计),它是一个非常长的字符串,长度超过30个字符。尝试运行迁移时,出现以下错误: 是否可以将flyway配置为忽略元数据表中的installed by列?我怀疑这可以通过建造一个更大的列的flyway来解决,或者通过连接用户名来解决。 编辑 我可以通过登录数据库并手动将列扩展到50个字符来缓解此问题:
对于分区的Avro配置单元表,在Avro模式中具有大写字符的字段名将被拉回为空。我想知道我是否缺少一些设置/解决方法,或者这只是一个配置单元上下文的错误。 我已经尝试过将以下内容添加到DDL中: …并设置spark.sql。区分大小写,对真/假敏感 Spark版本1.5.0 Hive版本1.1.0 您可以通过在 Hive 中运行以下 DDL 来重新创建问题: ...
一、分区表 1.1 概念 Hive 中的表对应为 HDFS 上的指定目录,在查询数据时候,默认会对全表进行扫描,这样时间和性能的消耗都非常大。 分区为 HDFS 上表目录的子目录,数据按照分区存储在子目录中。如果查询的 where 字句的中包含分区条件,则直接从该分区去查找,而不是扫描整个表目录,合理的分区设计可以极大提高查询速度和性能。 这里说明一下分区表并 Hive 独有的概念,实际上这个概念
问题内容: 例: 数组仍保留其原始值,是否可以通过迭代函数对数组元素进行写访问? 问题答案: 回调传递给元素,索引和数组本身。 编辑 -如注释中所述,该函数可以采用第二个参数,该参数将用作每次对回调的调用中的值: 第二个例子说明了自己是在回调中设置的。有人可能认为调用中涉及的数组可能是的 默认 值,但无论出于何种原因,它都不是。会如果没有提供第二个参数。 (注意:如果回调是一个函数,则上述内容不适
本文向大家介绍将数据写入块后是否可以更改数据?相关面试题,主要包含被问及将数据写入块后是否可以更改数据?时的应答技巧和注意事项,需要的朋友参考一下 回答:不,这是不可能的。如果需要进行任何修改,组织也必须从所有其他模块中删除信息。