Impala 外部表读取未压缩文件但带有名称 (*.csv.gz)

我在 hdfs 中有一个数据源,其文件未压缩,即使它们的名称以 (*.csv.gz) 结尾,而且 Impala 无法识别它们尽管名称未压缩。有没有办法在不需要更改所有当前文件名的情况下读取外部表中的这些文件?如果没有,更改 hdfs 中所有当前文件名的最佳做法是什么?

这是表的当前创建查询:

CREATE EXTERNAL TABLE db.table1(
   col1 type,col2 type
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\u0001'
WITH SERDEPROPERTIES ('field.delim'='\u0001','serialization.format'=';')
STORED AS TEXTFILE
LOCATION 'hdfs://servicename/user/directory'

当前文件名示例(它们是 texfiles 并且未在内容级别上进行压缩):

-rw-rw-r--+ /final/file11_20210601_0000.csv.gz
-rw-rw-r--+ /final/file12_20210601_0015.csv.gz
-rw-rw-r--+ /final/file12_20210601_0045.csv.gz
-rw-rw-r--+ /final/file1_20210601_0015.csv.gz
hailong161 回答:Impala 外部表读取未压缩文件但带有名称 (*.csv.gz)

到目前为止,我没有发现关于外部表属性的方法来读取外部表中的“.gz”文件,但我可以制作一个 shell 脚本来更改所有文件并从它们的末端删除“.gz”:

for f in $(hdfs dfs -ls -t -r /user/dir/ | awk '{print $8}');do
  v=$(echo "$f" | cut -d'.' -f1,2)
  hdfs dfs -mv "$f" "$v"
done

但我仍然愿意接受直接在外部表中读取 .gz 文件的解决方案。

本文链接:https://www.f2er.com/77459.html

大家都在问