在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法

在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法

时间:2020-11-8 作者:gykj

本文的基本目标是介绍如何在不显式执行“ load”命令的情况下将数据加载或导入到Hive表中。基本上,使用这种方法,当原始数据以一致的时间表从外部源连续摄取到基于HDFS的Data Lake时,数据科学家可以直接在各种数据可视化工具上进行查询甚至可视化,以进行快速调查。否则,将需要“ load”命令来进一步执行,以将处理后的数据堆叠到Hive的表中。 

在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法

 在这里,我们正在考虑具有以下组件的现有环境,这些组件可以在云上或内部部署:

  • HDFS已安装和配置的多节点群集。Hive在HDFS之上运行,并且MySQL数据库作为metastore。
  • 假设利用卡夫卡,Flume,定制数据提取工具等将原始数据从多个来源转储到HDFS Data Lake登陆区。
  • 原始数据从着陆区移至精炼区,以清除垃圾,然后进入处理区,在此处理干净数据。在这里,我们考虑将处理后的数据存储在CSV格式的文本文件中。

Hive输入是基于目录的,类似于许多Hadoop工具。这意味着操作的输入将作为给定目录中的文件。使用HDFS命令,让我们使用在HDFS中创建目录$ hdfs dfs -mkdir <<name of the folder>>。根据用户的HDFS ACL设置,可以使用Hadoop管理UI进行相同的操作。 

现在,将数据文件从处理区域移到新创建的HDFS文件夹中。作为示例,在这里,我们考虑将简单的订单数据提取到数据湖中,并在清洗和过滤后最终将其转换为CSV格式的合并文本文件。几行如下

在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法福州小程序开发

下一步是使用以下命令在Hive中创建外部表,其中位置是在上一步中创建的HDFS目录的路径。这是我们可以用来通过Hive CLI创建外部表的命令。命令中的LOCATION语句告诉Hive在哪里找到输入文件。

在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法

如果该命令有效,则将打印OK,并且在执行Hive查询时,Hive引擎可以利用处理引擎Map Reducer或其他诸如Spark,Tez等从内部从这些输入文本文件中获取数据。理想情况下,Spark或Tez可以在hive-site.xml中被配置为处理引擎,以提高大量输入文件的数据处理速度。

一旦表创建成功,我们就可以在MySQL数据库的“ metastore”模式中对其进行交叉检查。要执行此操作,请登录到可能在集群中其他节点上运行的MySQL CLI,然后连接到“元存储”数据库并从“ TBLS”表中提取记录。这将显示创建的Hive表信息。

在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法

可以通过Hive的CLI列出表中的前几行来验证导入。

蜂巢>从OrderData中选择*;

另外,可以在Hive CLI中执行“分析计算统计信息”命令,以查看在该表上运行的作业的详细信息。

在基于HDFS的Data Lake之上运行的Hive表中加载或导入数据的另一种方法

这种方法的主要优点是,可以在最短的时间范围内查询,分析数据,而无需另外执行显式的数据加载操作。还可以帮助数据科学家在数据湖或集群上运行其机器学习作业之前检查数据质量。

版权所有:https://www.eraycloud.com 转载请注明出处