由于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那样编程了。