一般来说,在配置单元上已经存在一个问题(是否有方法改变配置单元表中的列类型?)。这个问题的答案是可以使用altertablechange命令更改模式但是,如果文件存储为orc,是否也可以这样做?
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可能不兼容。
ALTER TABLE test_orc CHANGE third_column third_column float;
ALTER TABLE test_orc CHANGE third_column third_column float AFTER first_column;
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")
2条答案
按热度按时间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可能不兼容。nuypyhwy2#
您可以将orc文件加载到pyspark中:
将数据加载到Dataframe:
在Dataframe上创建视图:
创建具有操纵列的新数据框:
将Dataframe保存到hdfs: