【问题标题】:How do I validate columns when adding a hive partition?添加配置单元分区时如何验证列?
【发布时间】:2018-05-11 06:26:35
【问题描述】:

我有一个这样创建的配置单元表: CREATE EXTERNAL TABLE test_db.test( region STRING, start_date STRING ) PARTITIONED BY ( id STRING ) STORED AS PARQUET.

我有一个脚本来添加这样的镶木地板文件:

ALTER TABLE test_db.test ADD IF NOT EXISTS PARTITION ( id = 'abc' ) LOCATION 's3://location/to/file'

此脚本接受用户输入的 parquet 文件位置。我想确保 parquet 文件列与表列匹配,但似乎 ADD PARTITION 语句总是有效,即使列是错误的。如何让 hive 验证 ADD 上的列?

【问题讨论】:

    标签: hive parquet


    【解决方案1】:

    Hive 是schema-on-read。当您添加具有数据文件位置的分区时,Hive 只需将其注册到其元存储中。此时不对实际数据进行模式检查。这与强制执行schema-on-write 的传统关系数据库形成对比。当实际读取数据时,Hive 将根据表定义为基础数据分配模式。

    镶木地板工具

    要验证parquet 文件,您可以利用parquet-tools。此实用程序可用于检查 parquet 文件中的架构。您可以在脚本中包含此步骤,并且仅当 parquet 文件架构与 Hive 表定义匹配时才添加分区。

    这是 1.6.0 版本的示例用法:

    一个。下载 JAR:

    http://central.maven.org/maven2/com/twitter/parquet-tools/1.6.0/parquet-tools-1.6.0.jar

    b.检查架构

    hadoop jar parquet-tools-1.6.0.jar schema /hdfs/path/to/file.parquet
    

    【讨论】:

      猜你喜欢
      • 2017-03-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多