Hive通过增量分区

时间:2018-06-14 16:44:24

标签: hadoop hive hdfs

我正在寻求以下问题的解决方案,并希望得到任何帮助。

数据源:Zip文件(放在SFTP),每个sql server表转储(.dat文件)包含40个文件。

需要将这些文件加载​​到Hadoop中,以便Alteryx和PowerBI使用Hive / Impala ODBC连接器使用这些文件。到目前为止,在Hadoop中不需要ETL。它只是充当数据存储。

解决方案

  1. 使用某些脚本将压缩文件从sftp加载到Edge节点上。
  2. 解压缩边缘节点上的所有文件(不在源头进行以防止网络I / O)
  3. 使用hdfs -put将其加载到HDFS。
  4. 使用TextFile格式在暂存/原始数据上定义外部Hive表。
  5. 插入另一个在列(SetID)上分区的外部Hive表,该列对每个Feed都是唯一的。使用RegEx删除流程中字段上的倒置冒号。以实木复合地板形式存放。
  6. 问题:

    1. 在处理zip文件方面有更好的方法吗?

    2. 40个文件中的某些文件(sql表转储)以KB和MB为单位。如何在HDFS中管理它们,因为它们无法合并。此外,在摄取之前,不能在源端等待文件变得足够大(等于或大于HDFS块大小),因为客户端每天都需要它们进行分析。

    3. 我需要为HDFS中的每个文件(40个文件中)创建单独的目录,以便在其上启用外部Hive表。是否有任何方法可以将所有内容保存在一个目录中并有选择地解析它们以逐个创建外部配置单元表。在某个地方阅读这是Hive要求的功能,但不知道它是否通过。

    4. 在上面的第4步中,我做了" INSERT INTO"从External Hive表(在步骤3中创建)执行RegEx并将数据转换为Parquet到新的外部表。

      一个。对于增量馈送(即一组新的40个文件),我需要做什么  " INSERT OVERWRITE"每次进入我的拼花外表?不知道  它会很好,因为我的数据大小会随着时间而增加  覆盖将是一种负担。

      湾每个新的Feed都会在我的上创建一个新的SetID分区     暂存外部表。如果我做"插入覆盖",那将如何通过     在我的镶木地板外表上。?

0 个答案:

没有答案