У куста есть виртуальный столбец с именем INPUT__FILE__NAME, и вы можете отфильтровать его в предложении where.
select * from --do everything else on this level
(select * from your_table --do filtering in the subquery wrapper
where INPUT__FILE__NAME rlike '\\.json$' --ends with .json
)s
Я не уверен, что это будет эффективно работать, потому что эти связанные Jiras, к сожалению, еще не реализованы: Добавить обрезку файлов в Hive и Выборочно включать в себя исходные файлы EXTERNAL TABLE черезREGEX
Если это решение будет работать медленно из-за того, что картостроители будут читать файлы, вам может потребоваться скопировать необходимые файлы в отдельную папку и построить поверх нее таблицу.
НайденыЕще одно решение, которое вы можете использовать: SymlinkTextInputFormat
Создайте новое местоположение с файлом, содержащим список всех необходимых файлов, и создайте таблицу поверх этого местоположения.
Например, расположение таблицы "/user/hive/mytable"
.Существует файл с именем "/user/hive/mytable/myfile.txt".Внутри файла есть 2 строки: "/user/myname/textfile1.txt"
и "/user/myname/textfile2.txt"
. Мы можем сделать:
CREATE TABLE mytable (...) STORED AS INPUTFORMAT 'org.apache.hadoop.hive.io.SymlinkTextInputFormat' LOCATION '/user/hive/mytable';
SELECT * FROM mytable;
, которая будет возвращать содержимое двух файлов: "/ user / myname/textfile1.txt "и" /user/myname/textfile2.txt"