是否可以将配置单元表格式转换为ORC并进行存储

时间:2019-10-30 02:58:47

标签: hive orc acid

我有一组蜂巢表,它们不是ORC格式,也没有存储。我想将其格式更改为ORC并进行分类。找不到整个网络的具体答案。任何答案或指导表示赞赏。     蜂巢版本是2.3.5

或者是否有可能在火花(pyspark或scala)中做到?

最简单的解决方案是创建一个新表,该表已存储并且为ORC格式,然后从旧表插入到该表中。寻找就地解决方案。

2 个答案:

答案 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

另请参阅Sorted Bucketed Table.