gpt4 book ai didi

hadoop - 如何将输入文件名作为配置单元查询中的列

转载 作者:可可西里 更新时间:2023-11-01 14:08:43 33 4
gpt4 key购买 nike

我有一个映射到某个目录的配置单元外部表。该目录包含几个文件。

我想在有用户“abc”的地方运行查询,比如查找文件名

 select file_name , usr from usrs_tables where usr = "abc"

当然,数据中不包含文件名。

在 MapReduce 中我可以通过

FileSplit fileSplit = (FileSplit)context.getInputSplit();
String filename = fileSplit.getPath().getName();
System.out.println("File name "+filename);
System.out.println("Directory and File name"+fileSplit.getPath().toString());

如何在 Hive 中执行此操作?

最佳答案

是的,您可以使用名为 INPUT__FILE__NAME 的虚拟列检索在其中找到记录的文件,例如:

select INPUT__FILE__NAME, id, name from users where ...;

产生类似的东西:

hdfs://localhost.localdomain:8020/user/hive/warehouse/users/users1.txt    2    user2
hdfs://localhost.localdomain:8020/user/hive/warehouse/users/users2.txt 42 john.doe

如有必要,请使用提供的 string functions从 uri 中修剪主机和目录。

您可以在此处找到有关虚拟列的文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+VirtualColumns

关于hadoop - 如何将输入文件名作为配置单元查询中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16715818/

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