将数据从 HDFS 加载到 Hive 时出现问题

Issues while Loading data from HDFS to Hive

场景 1: 在 hive 中创建 table 时提供自定义位置,然后使用 'copy from local' 命令加载数据。 下面的过程是直接将数据加载到我的 table 中。 但是当我使用默认位置使用 'copy from local' 命令加载数据时,方案 2 不起作用。因为它没有任何错误地执行但没有加载我的 table.

以下 link 场景 1 命令---

Scenario 1 Commands--这是将数据加载到table。

Scenario 2 Commands-- 将方案 1 的位置路径替换为默认配置单元路径 -- 但数据未加载。

需要复制到数据库的table目录下,而不仅仅是Hive仓库目录

在我看来,使用位置与不使用位置并没有太多优势

使用下面的命令找到需要复制文件的确切位置

hive -e 'describe formatted Employee'

如果您在默认数据库中创建了 table,则位置将为

/user/hive/warehouse/default.db/Employee 

如果您必须将文件复制到该文件夹​​

hadoop fs -put /home/weirdo/sample.txt /user/hive/warehouse/default.db/Employee/.

注意:如果您要创建分区 table,那么将其复制到分区文件夹是不够的。需要执行msck repair table Employee将分区信息添加到hive metastore

场景2:

你只是创建一个table,所以如果你没有使用location关键字,数据库将在默认仓库目录中创建

 /user/hive/warehouse

为了在第二种情况下加载数据

你必须将数据文件从本地路径复制到 hive 默认目录(或任何 hdfs 路径),稍后你必须使用加载命令手动加载数据。(即使你也可以从本地路径加载数据)

LOAD DATA LOCAL INPATH '<file_path>' INTO TABLE <table_name> 

LOAD DATA INPATH '<hdfs_file_path>' INTO TABLE <table_name> 

(我们可以使用copy from local命令来复制数据)