私の目標は、ノード内の特定の ColumnFamily 内のすべての行を反復処理することです。
これがphpコードです(phpcassaでラッパーを使用しています):
$ring = $cass_db->describe_ring();
foreach ($ring as $ring_details)
{
$start_token = $ring_details->start_token;
$end_token = $ring_details->end_token;
if ($start_token != null && $end_token != null)
{
$i = 0;
$batch_size = 10;
$params = array(
'token_start' => $start_token,
'token_finish' => $end_token,
'row_count' => $batch_size,
'buffer_size' => 1000
);
while ($batch = $cass_db->get_range_by_token('myColumnFamily', $params))
{
var_dump('Batch# '.$i);
foreach ($batch as $row)
{
$row_key = $row[0];
$row_values = $row[1];
var_dump($row_key);
}
$i++;
//Just to stop infinite loop
if ($i > 14)
{
die();
}
}
}
}
- get_range_by_token() は、$params で上書きされたデフォルト パラメータを使用します。
各バッチで、同じ 10 行のキーを取得します。
大規模な Cassandra DB で既存のすべての行を反復する方法は?