Как создать таблицу в разделе данных в улье?
drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/ розничный продавец /qi_basket_brand_bucket_fact/_impala_insert_staging drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:18 /kylin/ розничный продавец / qi_basquet_factbu__ =CI [mgupta@sjc-dev-binn01 ~]$ hadoop fs -ls /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI Найдено 27 объектов drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/ розничный продавец /qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201601 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/ розничный продавец / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / месяц-месяц-x-группа -gr_xr_xr_xr_xr_xr 0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201603 drwxr-xr-x - mguppta супергруппа 0 2018-03-26 22:16 /kylin/ retailer / qi_basket_brand_bucket_fact_type_ CI_H /month_id=201604 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201605 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201606 drwxr-xr-x - 0ggg8 03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201607 drwxr-xr-x - mgupta супергруппа 0 2018-03-26 22:16 /kylin/ retailer / qi_basket_brand_bucket_fact_type / product_hierarchy 201608 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:17 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201609 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:17 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201610 drwxr-xr-x - mgupta супергруппа 0 2018-03-26 22:17 / kylin / розничный продавец / qi_basket_brand_bucket_fact / product_hierarchy_xr = x-x / dr = xI / dr Супергруппа mgupta 0 2018-03-26 22:17 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201612 drwxr -xr-x - супергруппа mgupta 0 2018-03-26 22:17 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201701 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:17 / kylin / розничный продавец / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / month_id = 201702 drwxr-xr-x - mgupta супергруппа 0 2018-03-26 22:17 / kylin / розничный продавец / qi_basket_brand_bucket_fact / product_hierarchy_type = 201-месяц_процента 0 2018-03-26 22:17 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201704 drwxr-xr-x - mgupta супергруппа 0 2018-03-26 22:17 / kylin / retailer / qi_basket_brand_bucket_fact_type_ CIL_CH / month_id = 201705 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:17 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201706 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22: 17 / kylin / retailer / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / month_id = 201707 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:18 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201708 drwxr-xr-x - mgupta супергруппа 0 2018-03-26 22:18 /kylin/ розничный торговец / qi_basket_brand_bucket_fact / product_hierarchy_type = 201-месяц-x-xr / xr / xr Супергруппа mgupta 0 2018-03-26 22:18 /kylin/ retailer / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / month_id = 201710 drwxr-xr-x - Супергруппа mgupta 0 2018-03-26 22:18 /kylin/ retailer / qi_basket_factierar_bucket = CI / month_id = 201711 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:18 /kylin/ retailer / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / month_id = 201712 drwxr-xr-x - супергруппа mgupta 0 2018-03- 26 22:18 / kylin / розничный торговец / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / month_id = 201801 drwxr-xr-x - mgupta супергруппа 0 2018-03-26 22:18 /kylin/ розничный торговец / qi_basket_brand_bucket_fact / product_hr______w_ -xr-x - супергруппа mgupta 0 2018-03-26 22:18 /kylin/ розничный продавец /qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201803 [mgupta@sjc-dev-binn01 ~]$ hadoop fs -ls /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201601 Найдено 3 элемента drwxr-xr-x - mguptagg8ta 03-26 22:16 / kylin / розничный продавец /qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201601/company_sid=0 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/ розничный продавец / qi_basket_brand_bucket_fact_type CI/month_id=201601/company_sid=38527 drwxr-xr-x - супергруппа mgupta 0 2018-03-26 22:16 /kylin/ retailer / qi_basket_brand_bucket_fact / product_hierarchy_type = CI / month_id = 201601 / company_sid =HIVE_DEFAjta_ta_tata_tagta_ta_tad_tagta_ta_ta_tad_tagta_pt-binn01 ~]$ hadoop fs -ls /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201601/company_sid=0 Найдено 1 элементов -rw-r- r-- 3 мгупта супергруппа 2069014 2018-03-26 22:16 /kylin/retailer/qi_basket_brand_bucket_fact/product_hierarchy_type=CI/month_id=201601/company_sid=0/f9466a0068b906cf-6ace7f8500000049_294515768_data.0.parq [mgupta@sjc-dev-binn01 ~]$
2 ответа
Вы можете попробовать шаги, приведенные ниже.
Approach1:
- Определите схему (имена и типы столбцов, включая разделенный столбец)
- Создайте таблицу разделов кустов (обязательно добавьте информацию о столбцах разделителей и разделителях)
Загрузите данные в секционированную таблицу.
create table <table_name> (col1 data_type1, col2 data_type2..) partitioned by(part_col data_type3) row format delimited fields terminated by '<field_delimiter_in_your_data>' load data inpath '/hdfs/loc/file1' into table <table_name> partition (<part_col>='201601'); load data inpath '/hdfs/loc/file1' into table <table_name> partition (<part_col>='201602') load data inpath '/hdfs/loc/file1' into table <table_name> partition (<part_col>='201603')
и так далее..
Подход 2:
- Создайте промежуточную таблицу (временную таблицу) с той же схемой, что и у основной таблицы, но без каких-либо разделов
- Загрузите все данные в эту таблицу (убедитесь, что у вас есть "столбец раздела" в качестве одного из полей в этих файлах)
Загрузите данные в основную таблицу из промежуточной таблицы, используя динамическую вставку раздела.
create table <staging_table> (col1 data_type1, col2 data_type2..) row format delimited fields terminated by '<field_delimiter_in_your_data>' create table <main_table> (col1 data_type1, col2 data_type2..) partitioned by(part_col data_type3); load data inpath '/hdfs/loc/directory/' into table <staging_table>; SET hive.exec.dynamic.partition=true; SET hive.exec.dynamic.partition.mode=nonstrict; insert into table <main_table> partition(part_col) select col1,col2,....part_col from <staging_table>;
Ключевые аспекты в подходе 2:
- Обеспечение доступностиpart_col в качестве поля в загрузочном файле
- В последнем операторе вставки получите 'part_col' как последнее поле из предложения select.
Создадим таблицу с разбиением на год и месяц, с отметкой времени в таблице:
CREATE TABLE `mypart_p`(
`id` bigint,
`open_ts` string
)
PARTITIONED BY (YEAR INT, MONTH INT)
Теперь я должен изменить таблицу.
ALTER TABLE mypart_p ADD PARTITION (YEAR=2020, MONTH=1)
Я должен был делать это для каждого года и месяца, делал это в цикле на питоне. Теперь давайте заполним его данными и назначим, к какому разделу принадлежат эти данные:
INSERT into mypart_p PARTITION (YEAR=2020, MONTH=1)
select id,
open_ts
FROM some_other_table
WHERE substring(open_ts,0,4) = '2020'
AND substring(open_ts,6,2) = '01'