Trafodion Troubleshooting - Trying to load more than 32 hfiles to one family of one region

現象

在Trafodion中往一個單分區表中Load數據的時候,或者在一個大的分區表上建立單分區索引的時候,會遇到如下錯誤,java

ERROR[8448] Unable to access Hbase interface. Call to ExpHbaseInterface:doBulkLoad returned error HBASE_DOBULK_LOAD_ERROR(-715). Cause: java.io.IOException. Trying to load more than 32 hfiles to one family of one region.

分析

此報錯屬於HBase自己的限制,因爲Trafodion的Load是調用HBase的Bulk Load,HBase在Bulk Load時默認一個region的hfile個數是32,當hfile文件個數超過32個時則會報上述錯誤。web

解決

方案1
修改HBase配置,調大hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily值,須要重啓HBase才生效併發

<property>
        <name>hbase.mapreduce.bulkload.max.hfiles.perRegion.perFamily</name>
        <value>32</value>
</property>

方案2
若是是Load表出錯,使用upsert using load來代替Load命令svg

upsert using load into table_name ...

若是是建立索引報此錯,使用如下cqd控制建立索引時使用upsert using load而非loadcode

cqd traf_load_use_for_indexes 'OFF' ;

方案3
減小Load的併發度,使用如下cqd控制xml

cqd parallel_num_esps '<value>';