【问题标题】:How to generate json object from hive SQL table description?如何从配置单元 SQL 表描述生成 json 对象?
【发布时间】:2021-05-14 02:54:19
【问题描述】:

我使用describe formatted table_name 来获取表格的描述。我得到以下结果。我想以某种方式将其转换为 json。有什么好的方法吗?换句话说,我想将我的 sql 表描述作为 json。不像以下输出中所示的表格。

我想得到的输出应该是这样的:

{
    "columns" : {
        "id" : "int",
        "name": "string"
    },


    "partition_information": {
        "columns" : {
            "dt_temp" : "string"
        }
    },

    "Detailed table information" : {
        "Database" : "d1",
        "owner" : "root",
        .
        .
        .
        .
        .
        
    }
}

是否有任何函数或库可以为我做到这一点?现在,我正在使用 python 脚本手动执行此操作,但这非常困难且混乱。我不期望我提到的完全相同的输出,我正在寻找一种方法来从一些 python 脚本中轻松且有意义地解析它。有什么建议吗?

【问题讨论】:

    标签: json hive hiveql hiveddl


    【解决方案1】:

    DESCRIBE EXTENDED 可以生成 JSON(检查它在 Hive 2.1.1 上工作正常):

    set hive.ddl.output.format=json;
    desc extended table_name;
    

    它产生这样的输出:

    {"columns":[{"name":"id","type":"bigint","comment":"from deserializer"}, 
                {"name":"col1","type":"string","comment":"from deserializer"},
                ...
    

    【讨论】:

    • 感谢这个解决方案,但它没有给我完整的 json 对象。我只获取列名及其类型,其余信息丢失在 json 对象中。 json对象未接收到分区列、输入格式等信息。
    • @RuchitVithani 在我的配置单元 2.1.1 中,它返回“partitionKeysIterator”数组、“inputFormat”、“outputFormat”
    • @RuchitVithani DESC FORMATTED 不返回 partitionKeysIterator 和 Inputformat,但 DESC EXTENDED 有效,请检查您使用的是 DESC EXTENDED
    • 是的,这行得通。感谢您的解决方案:)
    • 是否可以从这样的 json 对象中创建表查询?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-15
    • 2021-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-22
    相关资源
    最近更新 更多