, учитывая, что ваша страна отделена tab '\t'
, а другие поля разделены ,
. Это то, что вы можете сделать.
Вы можете создать временную таблицу, в которой первые столбцы представлены в виде строки, а остальные - в виде массива.
create external table temp.test_csv (country string, count array<int>)
row format delimited
fields terminated by "\t"
collection items terminated by ','
stored as textfile
location '/apps/temp/table';
Теперь, если вы поместите свои файлы в папку /apps/temp/table
, вы сможете выбрать данные, как указано ниже.
select country, count[0] as count_1, count[1] count_2, count[2] count_3 from temp.test_csv
Теперь для создания разделов создайте еще одну таблицу, как упомянуто ниже.
drop table temp.test_csv_orc;
create table temp.test_csv_orc ( count_1 int, count_2 int, count_3 int)
partitioned by(year string, month string, day string, country string)
stored as orc;
И загрузите данные из временной таблицы в эту.
insert into temp.test_csv_orc partition(year="2018", month="09", day="28", country)
select count[0] as count_1, count[1] count_2, count[2] count_3, country from temp.test_csv
Я выбрал страну как Динамическое разделение, так как оно исходит из файла, но другие не так статичны.