hive-如何从文件名为列的文件中加载数据?

vuktfyat  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(310)

我正在运行以下命令来创建表,并从指定文件路径中的所有文件插入数据。现在我想添加一个带有文件名的列,但是我找不到任何方法在不遍历文件的情况下这样做。你有什么建议吗?

CREATE TABLE ABC
(NAME string
,DATE string
)
ROW FORMAT DELIMITED 
FIELDS TERMINATED BY '\t' 
STORED AS TEXTFILE;

hive -e "LOAD DATA LOCAL INPATH '${DATA_FILE_PATH}' INTO TABLE ABC;"
fv2wmkja

fv2wmkja1#

配置单元确实有虚拟列,其中包括 INPUT__FILE__NAME . 这个链接展示了如何在语句中使用它。
用文件名作为列填充另一个表。假设您的数据位置是hdfs://hdfs.location:端口/数据/文件夹/文件名1

DROP TABLE IF EXISTS ABC2;
CREATE TABLE ABC2 (
    filename STRING COMMENT 'this is the file the row was in',
    name STRING,
    date STRING);
INSERT INTO TABLE ABC2 SELECT split(INPUT__FILE__NAME,'folder/')[1],* FROM ABC;

您可以更改分割以更改实际要存储多少完整路径。

相关问题