如何使用Hive从群集中读取?

时间:2014-08-12 14:57:51

标签: hadoop hive

考虑我在群集中的许多计算机上分发了某些数据。

如何使用Hive加载数据而不必担心它的位置?

由于

1 个答案:

答案 0 :(得分:0)

详细说明如何从HDFS将数据加载到Hive中。

将文件加载到表格中

Hive在将数据加载到表中时不进行任何转换。加载操作当前是纯复制/移动操作,可将数据文件移动到与Hive表对应的位置。

<强>语法

LOAD DATA INPATH 'filepath' [OVERWRITE] INTO TABLE tablename [PARTITION (partcol1=val1, partcol2=val2 ...)]

<强>概要

加载操作当前是纯复制/移动操作,可将数据文件移动到与Hive表对应的位置。

<强>ⅰ) - 文件路径可以是:

  • 相对路径,例如project / data1
  • 绝对路径,例如/ user / hive / project / data1
  • 带有scheme的完整URI和(可选)权限,例如 HDFS://名称节点:9000 /用户/蜂巢/项目/ DATA1

<强>ⅱ) - 加载的目标可以是表或分区。如果表已分区,则必须通过指定所有分区列的值来指定表的特定分区。

<强>ⅲ) - filepath可以引用一个文件(在这种情况下Hive会将文件移动到表中)或者它可以是一个目录(在这种情况下,Hive会将该目录中的所有文件移动到表中)。在任何一种情况下,filepath都会解决一组文件。

<强> IV) - 如果未指定关键字LOCAL,则Hive将使用文件路径的完整URI(如果指定了一个),或者将应用以下规则:

  • 如果未指定方案或授权,Hive将使用该方案 和hadoop配置变量fs.default.name中的权限 指定Namenode URI。
  • 如果路径不是绝对的,那么Hive会相对于它解释它 /用户/
  • Hive会将filepath所处理的文件移动到表中(或 分区)

<强> V) - 如果使用OVERWRITE关键字,则将删除目标表(或分区)的内容,并替换为filepath引用的文件;否则filepath引用的文件将被添加到表中。

  • 请注意,如果目标表(或分区)已经有一个文件 name会与filepath中包含的任何文件名冲突 现有文件将替换为新文件。

请参阅以下链接的详细信息。

https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DML