gpt4 book ai didi

hadoop - 将数据从 .txt 文件加载到 Hive 中存储为 ORC 的表

转载 作者:可可西里 更新时间:2023-11-01 14:07:04 24 4
gpt4 key购买 nike

我有一个.txt 格式的数据文件。我正在使用该文件将数据加载到 Hive 表中。当我将文件加载到像

这样的表中时
CREATE TABLE test_details_txt(
visit_id INT,
store_id SMALLINT) STORED AS TEXTFILE;

使用

正确加载数据
LOAD DATA LOCAL INPATH '/home/user/test_details.txt' INTO TABLE test_details_txt;

我可以在 Hive 的表上运行 SELECT * FROM test_details_txt;

但是,如果我尝试将数据加载到一个表中,那就是

CREATE TABLE test_details_txt(
visit_id INT,
store_id SMALLINT) STORED AS ORC;

我在尝试运行 SELECT 时收到以下错误:

异常 java.io.IOException 失败:java.io.IOException:格式错误的 ORC 文件 hdfs://master:6000/user/hive/warehouse/test.db/transaction_details/test_details.txt。后记无效。

使用上述 LOAD 语句加载数据时,我没有收到任何错误或异常。

使用 LOAD DATA IN PATH.. 命令将数据存储到 ORC 表中时,是否还有需要做的其他事情

最佳答案

LOAD DATA 只是将文件复制到配置单元数据文件。 Hive 在将数据加载到表中时不进行任何转换。

因此,在这种情况下,如果要将输入文件 /home/user/test_details.txt 加载到 ORC 表中,则它需要采用 ORC 格式。

一种可能的解决方法是使用STORED AS TEXT 创建一个临时表,然后将LOAD DATA 放入其中,然后将数据从该表复制到 ORC 表。

这是一个例子:

CREATE TABLE test_details_txt( visit_id INT, store_id SMALLINT) STORED AS TEXTFILE;
CREATE TABLE test_details_orc( visit_id INT, store_id SMALLINT) STORED AS ORC;

-- Load into Text table
LOAD DATA LOCAL INPATH '/home/user/test_details.txt' INTO TABLE test_details_txt;

-- Copy to ORC table
INSERT INTO TABLE test_details_orc SELECT * FROM test_details_txt;

关于hadoop - 将数据从 .txt 文件加载到 Hive 中存储为 ORC 的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21721251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com