Как создать таблицу в разделе данных в улье?

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:

  1. Определите схему (имена и типы столбцов, включая разделенный столбец)
  2. Создайте таблицу разделов кустов (обязательно добавьте информацию о столбцах разделителей и разделителях)
  3. Загрузите данные в секционированную таблицу.

    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:

  1. Создайте промежуточную таблицу (временную таблицу) с той же схемой, что и у основной таблицы, но без каких-либо разделов
  2. Загрузите все данные в эту таблицу (убедитесь, что у вас есть "столбец раздела" в качестве одного из полей в этих файлах)
  3. Загрузите данные в основную таблицу из промежуточной таблицы, используя динамическую вставку раздела.

    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'
Другие вопросы по тегам