spark幾萬個分割槽表無法執行

2021-07-26 05:43:17 字數 1630 閱讀 1520

步驟1:進行hive,建立分割槽表

create table partition_test

(member_id string,

name string

)partitioned by (

stat_date string,

province string)

row format delimited fields terminated by ',';

步驟2: 生成分割槽,執行

addpartitions.sh 這個指令碼壓縮包裡有,這個指令碼會生成100個一級分割槽,每個一級分割槽生成1000個二級分割槽

[warehouse@dcwarehouse1 ~]$ chmod u+x addpartitions.sh 

[warehouse@dcwarehouse1 ~]$ ./addpartitions.sh > partitions10w      (生成10w個分割槽到partitions10w這個檔案)

[warehouse@dcwarehouse1 ~]$ hive -f partitions10w   (開始執行分割槽,生成分割槽比較慢,可能要1到2個鐘) (0.1到0.6s乙個分割槽)

檢視目前生成了多少個分割槽

/user/hive/warehouse是數倉的位置,

如果不知道可以執行show create table partition_test; 檢視表的儲存位置

hadoop fs -count hdfs://de-hdfs/user/hive/warehouse/partition_test

步驟3: 測試:分別在hive和spark-sql中測試

select * from partition_test where province ='3' and stat_date in ('20160401','20160328','20160405');

select name from partition_test where province ='3' and stat_date in ('20160401','20160328','20160405');

說明:對比線上sql :對於有幾個萬分區的分割槽表,sparksql一跑就掛,但hive不會,請問怎麼處理.txt 裡面的sql語法,測試一下

執行sql:

ga10.coin_gain_lost是乙個有幾萬個分割槽的分割槽表

date欄位是一級分割槽

caused by: org.apache.thrift.transport.ttransportexception: frame size (47350517) larger than max length (16384000)!

執行的指令碼為:

#/bin/sh

alias hive='/home/hadoop2/hive/bin/hive'

date_str=`date +%y%m%d`

for i in ;

dodays_ago=`date +%y%m%d -d "$i days ago"`

for num in ;

doecho  alter table partition_test add partition \(stat_date="'"$"'",province="'"$num"'"\)\;

done;

done;

只因這個動作,等紅燈時可能損失好幾萬!

聽說,自動擋汽車乙個不注意,就有可能損失1萬塊,甚至幾萬塊,這到底是怎麼回事?許多車主在等紅燈的時候,都會習慣性的直接掛在d檔上,然後踩著剎車。遇到紅燈長一些時間的時候,會直接掛到p檔。大部分車主覺得這樣省油又省力,但實際上,也許就是因為你這個小小的動作,有可能會白白損失上萬塊哦。直接掛d擋的等紅燈...

負債十幾萬學英語,你學的也許只是「焦慮」

人的時間 精力都非常有限,分不清主次,不僅無法增加你的核心競爭力,相反可能讓你陷入陷阱,失去方向。知道 nz zhidao 跟你談談,負債十幾萬學英語,值得嗎?學英語以至致於揹負了十幾萬元的貸款,你敢相信嗎?為什麼揹負貸款也要學英語?林燦事後回憶 銷售一直對我說,就是沒學英語找不到工作,學了英語才有...

資料庫 一次插入幾萬條資料

最近做了乙個功能,操作的資料量特別大,一次往資料庫 插入上萬條資料。我用了 迴圈新增,和ef封裝的新增功能。兩次方式速度都非常慢,一萬條資料要幾分鐘。在網上 查詢資料後,可以建立乙個datatable物件,然後把資料都賦值給這個datatable物件的列。然後copy到資料庫就行了。下面這段 是 例...