我有一组蜂巢表,它们不是ORC格式,也没有存储。我想将其格式更改为ORC并进行分类。找不到整个网络的具体答案。任何答案或指导表示赞赏。 蜂巢版本是2.3.5
或者是否有可能在火花(pyspark或scala)中做到?
最简单的解决方案是创建一个新表,该表已存储并且为ORC格式,然后从旧表插入到该表中。寻找就地解决方案。
答案 0 :(得分:2)
配置单元:
使用临时表,通过以下命令读取未存储的数据(假设为TEXTFILE
格式):
CREATE TABLE staging_table(
col1 colType,
col2 colType, ...
coln colType
)
STORED AS
TEXTFILE
LOCATION
'/path/of/input/data';
CREATE TABLE target_table(
col1 colType,
col2 colType, ...
coln colType
)
CLUSTERED BY(col1) INTO 10 BUCKETS
STORED AS ORC;
INSERT OVERWRITE TABLE table_bucketed
SELECT
col1, col2, ..., coln
FROM
staging_table;
可以使用**Spark** DataFrame APIs
(假设CSV
格式)执行以下操作:
df = spark.read.format("csv")
.option("inferSchema", "true")
.option("header", "true")
.option("delimiter", ",")
.option("path", "/path/of/input/data/")
.load()
df.write.format("orc")
.option("path", "/path/of/output/data/")
.save()
答案 1 :(得分:1)
创建bucketed table并使用INSERT OVERWRITE将数据加载到其中:
CREATE TABLE table_bucketed(col1 string, col2 string)
CLUSTERED BY(col1) INTO 10 BUCKETS
STORED AS ORC;
INSERT OVERWRITE TABLE table_bucketed
select ...
from table_not_bucketed