有没有可能将配置单元表格式转换为orc并使其成为嵌套格式

ecbunoof  于 2021-06-25  发布在  Hive
关注(0)|答案(2)|浏览(424)

我有一套Hive表,不是在兽人的格式,也没有扣。我想把它们的格式改成兽人的,也要把它们扣起来。在网上找不到具体的答案。任何回答或指导都将不胜感激。配置单元版本是2.3.5
或者是否有可能在spark(pyspark或scala)中完成?
最简单的解决方案是创建一个新表,该表采用orc格式,然后从旧表插入。寻找就地解决方案。

zpgglvta

zpgglvta1#

创建bucketed表并使用insert overwrite将数据加载到其中:

  1. CREATE TABLE table_bucketed(col1 string, col2 string)
  2. CLUSTERED BY(col1) INTO 10 BUCKETS
  3. STORED AS ORC;
  4. INSERT OVERWRITE TABLE table_bucketed
  5. select ...
  6. from table_not_bucketed

另请参见分类的带扣表。

ehxuflar

ehxuflar2#

配置单元:使用暂存表读取未绑定的数据(假设 TEXTFILE 格式)使用以下命令:

  1. CREATE TABLE staging_table(
  2. col1 colType,
  3. col2 colType, ...
  4. coln colType
  5. )
  6. STORED AS
  7. TEXTFILE
  8. LOCATION
  9. '/path/of/input/data';
  10. CREATE TABLE target_table(
  11. col1 colType,
  12. col2 colType, ...
  13. coln colType
  14. )
  15. CLUSTERED BY(col1) INTO 10 BUCKETS
  16. STORED AS ORC;
  17. INSERT OVERWRITE TABLE table_bucketed
  18. SELECT
  19. col1, col2, ..., coln
  20. FROM
  21. staging_table;

同样的方法也可以在 **Spark**DataFrame APIs (假设 CSV 格式)如下:

  1. df = spark.read.format("csv")
  2. .option("inferSchema", "true")
  3. .option("header", "true")
  4. .option("delimiter", ",")
  5. .option("path", "/path/of/input/data/")
  6. .load()
  7. df.write.format("orc")
  8. .option("path", "/path/of/output/data/")
  9. .save()
展开查看全部

相关问题