由於yii天生是對mysql這種sql數據庫提供支持的,而hive則沒有驅動器,所以hive查詢出來的東西不能使用CxxxDataProvider,這給分頁顯示帶來很多麻煩。
解決方案:
1.使用CArrayDataProvider,示例代碼如下:
$hive=new Hive(array("10.1.3.197:10000"));
$hive->execute($sql);
$result=$hive->fetchAll();
//var_dump($result);die;
foreach($result as &$json_obj) {
$json_obj=strstr($json_obj, '{');
$json_obj=json_decode($json_obj, true);
$json_obj['id']=$json_obj['timestamp'];
}
//var_dump($result);die;
$dataProvider=new CArrayDataProvider($result, array(
'id'=>'timestamp',
'sort'=>array(
'attributes'=>array(
'username', 'hostname', 'timestamp', 'log', 'exit-code'
),
),
'pagination'=>array(
'pageSize'=>30,
),
));
2. 讓hive支持odbc接口,這樣就能像操作mysql那樣編程了。