我有以下文件结构
/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');
答案 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}}。