【问题标题】:Create Hive table from parquet files and load the data从 parquet 文件创建 Hive 表并加载数据
【发布时间】:2018-02-19 01:49:44
【问题描述】:

我发现很难将 parquet 文件加载到 hive 表中。我正在使用 Amazon EMR 集群和 spark 进行数据处理。但我需要阅读输出 parquet 文件来验证我的转换。我有以下架构的镶木地板文件:

root
 |-- ATTR_YEAR: long (nullable = true)
 |-- afil: struct (nullable = true)
 |    |-- clm: struct (nullable = true)
 |    |    |-- amb: struct (nullable = true)
 |    |    |    |-- L: string (nullable = true)
 |    |    |    |-- cdTransRsn: string (nullable = true)
 |    |    |    |-- dist: struct (nullable = true)
 |    |    |    |    |-- T: string (nullable = true)
 |    |    |    |    |-- content: double (nullable = true)
 |    |    |    |-- dscStrchPurp: string (nullable = true)
 |    |    |-- amt: struct (nullable = true)
 |    |    |    |-- L: string (nullable = true)
 |    |    |    |-- T: string (nullable = true)
 |    |    |    |-- content: double (nullable = true)
 |    |    |-- amtTotChrg: double (nullable = true)
 |    |    |-- cdAccState: string (nullable = true)
 |    |    |-- cdCause: string (nullable = true)

如何使用这种类型的模式创建 hive 外部表并将 parquet 文件加载到该 hive 表中进行分析?

【问题讨论】:

    标签: apache-spark hive schema external parquet


    【解决方案1】:

    您可以使用Catalog.createExternalTable(Spark 2.2 之前的版本)或Catalog.createTable(Spark 2.2 及更高版本)。

    Catalog实例可以使用SparkSession访问:

    val spark: SparkSession
    spark.catalog.createTable(...)
    

    应在启用 Hive 支持的情况下初始化会话。

    【讨论】:

    • 我不确定 createTable(...here...) 里面放了什么。我只有镶木地板文件,没有单独存储架构/元数据文件。我可以使用这些镶木地板文件创建一个数据框并执行我已粘贴在我的问题中的 printSchema()。现在如何创建表?在蜂巢中使用这种类型的嵌套模式是我的问题吗?
    猜你喜欢
    • 2021-12-31
    • 2020-07-14
    • 2016-03-16
    • 2018-05-28
    • 2023-04-03
    • 1970-01-01
    • 2019-02-18
    • 2018-01-23
    相关资源
    最近更新 更多