【问题标题】:Inserting Partitioned Data into External Table in Hive将分区数据插入 Hive 中的外部表
【发布时间】:2018-07-11 09:35:47
【问题描述】:

关于将数据插入外部表,我需要一点说明。

我创建了一个外部 parquet 表,它按周分区指向一个 hadoop 位置,之后我将数据(一个 .csv 文件)移动到该位置。

我的疑问是因为表是按周分区的,即使我只是将文件移动到该目录,hive 也不会读取,我必须使用 insert 命令,相比之下,当我们有一个未分区的 hive 表时,将直接从该 hadoop 路径中读取

【问题讨论】:

    标签: hadoop hive hadoop-partitioning external-tables


    【解决方案1】:

    您需要考虑 CSV 中包含哪些数据。例如,如果您按年份对定时数据进行分区,则不会将包含多个年份值的 CSV 复制到单个分区中。您需要拆分数据集。

    即使我只是将文件移动到该目录,hive 也不会读取,我必须使用插入命令

    正确。特别是因为它是一个试图读取 CSV 的镶木地板。

    澄清一下,如果将 Hive 放在以文本形式存储的表格中,Hive 会读取 CSV。

    您需要一个单独的表格,您可以在其中读取文本文件,然后插入另一个表格,同时转换文件格式

    【讨论】:

    • 所以这与分区无关,我是否正确理解我们需要在将文件放在 hadoop 位置后始终使用插入命令来查看配置单元中的数据?
    • 分区不是唯一的考虑因素。正如我所说,文件类型是另一种类型
    • 您能否澄清一下,一旦我将文件放在指向 Hive 外部表的 hdfs 中,Hive 外部表会在哪些情况下直接反映数据?
    • 当数据以正确的表格式复制到其位置时,外部表立即可查询
    • 您需要创建分区表,外部或托管。没关系...然后您 INSERT OVERWRITE TABLE 来自非分区数据。我知道的唯一其他选择是为每个分区创建一个 csv(使用一些外部工具进行过滤),创建 hdfs 路径,然后相应地复制每个文件。特别是因为 DDL 不支持 CREATE TABLE x PARTITION(y) LIKE t cwiki.apache.org/confluence/display/Hive/…
    猜你喜欢
    • 2020-01-13
    • 1970-01-01
    • 2020-02-10
    • 1970-01-01
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-19
    相关资源
    最近更新 更多