【问题标题】:How to append data to already existing hive backend file?如何将数据附加到已经存在的配置单元后端文件?
【发布时间】:2021-07-29 11:06:00
【问题描述】:

我正在编写一个 shell 脚本,我需要将数据附加到现有的配置单元表中。我将数据放在边缘节点中,然后将其移动到 HDFS。但它不允许我将数据附加到配置单元。

hadoop fs -rm /user/hive/warehouse/db/report/daily_report.txt hadoop fs -copyFromLocal /../logs/${process_NM}_${start_ts}_final.txt /user/hive/warehouse/db/report/daily_report.txt

我试图通过删除hadoop fs -rm /user/hive/warehouse/db/report/daily_report.txt 这一行来运行脚本,我想如果我不删除这个文件,它会附加数据。请指导我。

【问题讨论】:

    标签: file hive append backend


    【解决方案1】:

    每个 Hive 表和分区在 HDFS 中都有存储数据的位置。要将数据追加到 Hive 表中,您只需将新文件放入表位置即可。

    不要覆盖文件,只需将新文件放在同一位置即可。例如像这样(假设你每天都有新文件的名称带有时间戳):

    hadoop fs -copyFromLocal /../logs/${process_NM}_${start_ts}_final.txt /user/hive/warehouse/db/report/${process_NM}_${start_ts}_report.txt 
    

    或者您可以不指定目标文件名,您的文件将被复制到位置:

    hadoop fs -copyFromLocal /../logs/${process_NM}_${start_ts}_final.txt /user/hive/warehouse/db/report/
    

    还可以考虑按日期对表进行分区并使用LOAD DATA command 加载新分区。

    【讨论】:

      猜你喜欢
      • 2012-08-12
      • 1970-01-01
      • 2014-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-23
      • 2013-04-27
      相关资源
      最近更新 更多