我想在cassandra中获取一行的所有列名,如何在phpcassa中实现?
如果phpcassa不支持它,任何其他语言、libs都可以做到吗?
在我的例子中,列名很短,但行很长(大约1000+),数据很大(大约100K)
你有一个很好的问题。试试这样的东西:
$pool = new ConnectionPool('feed', array('127.0.0.1'));
$raw = $pool->get();
$rows = $raw->client->execute_cql_query("SELECT * FROM posts", cassandra_Compression::NONE);
var_dump($rows);
也许它会有所帮助。。。
您的意思是直接且仅使用phpCassa获取名称吗?我不知道有什么方法可以直接做到这一点,但我过去常常通过获取所有行,然后在列族中的数组上执行foreach循环来实现,就像这样:
1.-一个可以在任何地方使用的小功能(如果需要,可以构建自己的;):
function f_get_data_as_array($p_pool, $p_cf, $p_key, $p_col_count = 100, $p_column_names = NULL, $p_range_start = '', $p_range_end = '', $p_inverted_sort = false)
{
try{
$lv_slice = new ColumnSlice($p_range_start, $p_range_end, $p_col_count, p_inverted_sort);
$lv_cf = new ColumnFamily($p_pool, $p_cf);
$lv_cf->insert_format = ColumnFamily::ARRAY_FORMAT;
$lv_cf->return_format = ColumnFamily::ARRAY_FORMAT;
$lv_result = $lv_cf->get($p_key, $lv_slice, $p_column_names);
}catch(Exception $lv_e)
{
return false;
}
return $lv_result;
2.-我使用前四个参数来调用它,设置池、列族名称、我需要的键和我想要获得的列数(根据需要设置数字)。
3.-在返回的数组上进行foreach循环,以获取每个列名。或者,如果您知道将从列族中获得的结构,您只需要使用正确的索引,可能是:$lv_result[0],$lv_result[0][1],等等…
希望能有所帮助。对不起我的英语!