2

我需要在 Hive 中创建一些表,为此我想在 hdfs 中插入数据,以便自动创建一个 hive 表。

我考虑这个例子: 蜂巢表

我需要将这些信息存储在 Hive 中。你能告诉我一个如何在 HDFS 中插入数据的例子吗?

4

1 回答 1

1

将数据上传到 HDFS 时不会自动创建 Hive 表。这是您必须手动或通过应用程序以编程方式执行的操作。创建(外部)Hive 表的命令基本上是:

hive> create external table <table_name> (param_1_name param_1_type, ...) row format delimited fields terminated by ',' location '/user/<your_hdfs_user>/path/to/the/data/directory/';

以上是针对类似 CSV 格式的结构化数据。如果数据是用 JSON 编写的,那么您将需要使用 serde。

话虽如此,一旦创建了 Hive 表,将新数据添加到表中的一种非常简单的方法是将此类数据直接上传到 HDFS。这可以通过WebHDFS完成。例如,如果要将文件添加到 Hive 表指向的 HDFS 文件夹(curl用作 Http cient):

$ curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE
                [&overwrite=<true |false>][&blocksize=<LONG>][&replication=<SHORT>]
                [&permission=<OCTAL>][&buffersize=<INT>]"

您将收到必须遵循的重定向:

HTTP/1.1 307 TEMPORARY_REDIRECT
Location: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE...
Content-Length: 0 

因此,对重定向 URL 执行 PUT:

curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..."

(顺便说一句,curl如果您使用该-L选项,可以自动跟随重定向)。

创建文件后,您可以使用 POST 方法(op=append如文档中所述)将新数据附加到已存在的文件中。

高温高压

于 2015-07-14T08:27:49.473 回答