【问题标题】:Schema verification/validation before loading data into HDFS/Hive将数据加载到 HDFS/Hive 之前的模式验证/验证
【发布时间】:2018-03-22 10:43:21
【问题描述】:

我是 Hadoop 生态系统的新手,在将海量数据加载到 hdfs 之前,我需要大数据专家的一些建议,以实现架构验证/验证。

场景是:

我有一个具有给定架构的庞大数据集(大约 200 列标题)。该数据集将存储在 Hive 中 表/HDFS。在将数据加载到配置单元表/hdfs 之前,我想 对提供给 在将数据加载到 hdfs 时避免任何不需要的错误/异常。 就像有人试图传递具有更少或更多的数据文件一样 列数然后在第一级验证 加载失败。

实现相同目标的最佳方法是什么?

问候, 布佩什

【问题讨论】:

  • 请添加您拥有的数据文件类型的详细信息。您想到的框架以及数据的源和目标。因为,如果您有 xml/json 文件,您可以立即执行验证。如果它的制表符分开,您可以通过在基于制表符拆分后计算输入行的字符串数组来在 map reduce-mapper 中进行验证。因此,请添加更多详细信息以及您查看了哪些选项
  • 我有 csv/tsv 文件,我想将其移动(放置或 copyFromLocal)到我的 HDFS(Hadoop 集群)和一些配置单元表中(加载数据到...)。现在,在此存储时;我想在将这些文件的数据移动到 HDFS 或配置单元表之前对列数及其各自的类型(存在于这些文件中)执行某种验证(以避免任何处理时间打嗝 - 如数据类型不匹配等)。您提到使用 xml/json 文件可以立即执行此操作,能否请您也向我提供一些指向该方向的指示。

标签: hadoop hive hadoop2 sqoop


【解决方案1】:

由于您有文件,您可以将它们添加到 HDFS 中,并在此之上运行 map reduce。在这里,您将保留每一行,因此您可以验证列数、它们的类型和任何其他验证。

当我提到 jason/xml 时,要让 map reduce 识别该格式的记录会产生轻微的开销。但是,关于验证,您可以强制执行模式验证,也可以使用模式仅定义字段的特定值。因此,一旦模式准备好,您的解析(xml 到 java)然后将它们存储在另一个最终的 HDFS 位置以供进一步使用(如 HBase)。当您确定数据经过验证后,您可以在此基础上创建 Hive 表。

【讨论】:

    【解决方案2】:

    使用以下实用程序每次根据您在暂存目录中以 csv 文件格式收到的架构创建临时表,然后应用一些条件来识别您是否有有效的列。最后加载到原始表中。

    https://github.com/enahwe/Csv2Hive

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 2014-01-23
      • 1970-01-01
      • 2013-11-17
      • 1970-01-01
      相关资源
      最近更新 更多