Как архивировать таблицы улья? - PullRequest
0 голосов
/ 29 мая 2019

Есть ли способ проверить внешние таблицы кустов, созданные за 90 дней до этого, и удалить эти таблицы вместе с базовыми данными hdfs. Может ли это быть достигнуто в сценарии Unix?

1 Ответ

1 голос
/ 30 мая 2019

Смотрите, если путь к таблицам кустов /path/your_hive_table_path/, как показано ниже:

hadoop --cluster your-hadoop-cluster fs -ls /path/your_hive_table_path/

drwxrwxrwx+  - h_mifi supergroup          0 2019-01-24 10:33 /path/your_hive_table_path//mifidw_car_insurance_expire_month_data
drwxrwxrwx+  - h_mifi supergroup          0 2019-01-24 10:39 /path/your_hive_table_path//mifidw_car_owner
drwxr-xr-x+  - h_mifi supergroup          0 2019-05-30 03:01 /path/your_hive_table_path//push_credit_card_mine_result_new
drwxr-xr-x+  - h_mifi supergroup          0 2019-05-30 03:41 /path/your_hive_table_path//push_live_payment_bill_mine_result_new

Мы можем получить последнюю дату обновления файла таблицы, как показано ниже:

hadoop --cluster your-hadoop-cluster fs -ls /path/your_hive_table_path/ | awk -F'[ ]+' '{print $6}'
2019-01-24
2019-01-24
2019-05-30
2019-05-30

Нам нужно loop, чтобы проверить каждую таблицу на наличие более 90 дней и выполнить операции remove и drop. Полный сценарий оболочки ниже, я проверял, он работал хорошо, надеюсь, он поможет вам.

hadoop --cluster your-hadoop-cluster fs -ls /path/your_hive_table_path/ | grep '/path/your_hive_table_path/' | while read line
do
   #Get the update date of hive table
   date_str=`echo $line | awk -F'[ ]+' '{print $6}'`
   #get the path of hive table
   table_path=`echo $line | awk -F'[ ]+' '{print $8}'`
   #Get the table name of hive table
   table_name=`echo $table_path | awk -F'/' '{print $7}' `

   today_date_stamp=`date +%s`
   table_date_stamp=`date -d $date_str +%s`
   stamp_diff=`expr $today_date_stamp - $table_date_stamp`

   #Get the diff days from now
   days_diff=`expr $stamp_diff / 86400`

   #if diff days is greater than 90, rm and drop.
   if [ $days_diff -gt 90 ];then
      #remove the hdfs file
      hadoop --cluster your-hadoop-cluster fs -rm $table_path
      #drop the hive table
      hive -e"drop table $table_name"
   fi
done
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...