Hive仅从目录中选择csv文件

时间:2018-03-19 18:51:15

标签: hive

我有以下文件结构

/base/{yyyy-mm-dd}/ folder1/ folderContainingCSV/ logs/

我想从我的基本目录加载所有日期的数据。但问题是csv.gz目录中存在非log/格式的文件。有没有办法在从基目录级别查询时只选择csv.gz个文件。

示例查询: -

CREATE EXTERNAL TABLE IF NOT EXISTS csvData (
  `col1` string,
  `col2` string,
  `col3` string,
  `col4` string,
  `col5` string 
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = '|'
) LOCATION 's3://base/'
TBLPROPERTIES ('has_encrypted_data'='true');

1 个答案:

答案 0 :(得分:0)

您可能无法在创建表级别执行此操作。您需要将所有*.gz文件分别复制到另一个文件夹中。

这可以在hive脚本(包含create table语句)本身内完成。只需在hive脚本的开头添加以下命令(就在create table之前)

dfs -mkdir -p /new/path/folder
dfs -cp /regular/log/file/*.gz /new/path/folder

现在,您可以创建指向external table的{​​{1}}。