有没有办法改变存储为orc的配置单元表中的列?

yeotifhr  于 2021-06-28  发布在  Hive
关注(0)|答案(2)|浏览(294)

一般来说,在配置单元上已经存在一个问题(是否有方法改变配置单元表中的列类型?)。这个问题的答案是可以使用altertablechange命令更改模式
但是,如果文件存储为orc,是否也可以这样做?

vngu2lb8

vngu2lb81#

我在兽人的table上做了测试。可以将字符串转换为浮点列。 ALTER TABLE test_orc CHANGE third_column third_column float; 将被标记为字符串列的名为third\u column的列转换为float列。也可以更改列的名称。
旁注:我很好奇兽人的其他改动是否会产生问题。我尝试重新排序列时遇到异常。 ALTER TABLE test_orc CHANGE third_column third_column float AFTER first_column; 异常为:failed:execution error,从org.apache.hadoop.hive.ql.exec.ddltask返回代码1。表default.test\u orc不支持对列重新排序。serde可能不兼容。

nuypyhwy

nuypyhwy2#

您可以将orc文件加载到pyspark中:
将数据加载到Dataframe:

df = spark.read.format("orc").load("<path-of-file-in-hdfs")

在Dataframe上创建视图:

df2 = df.createOrReplaceTempView('Table')

创建具有操纵列的新数据框:

df3 = spark.sql("select *, cast(third_column as float) as third_column,  from Table")

将Dataframe保存到hdfs:

df3.write.format("orc").save("<hdfs-path-where-file-needs-to-be-saved")

相关问题