forked from afutseng/MySQL-HBase-SQLBridge
/
ThriftHBaseClientWrapper.php
119 lines (97 loc) · 3.06 KB
/
ThriftHBaseClientWrapper.php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
<?php
namespace MySQLMigrationBridge;
class ThriftHBaseClientWrapper {
protected $_hbaseclient;
public function __construct(\HbaseClient $hc) {
$this->_hbaseclient = $hc;
}
public function query($query, $params = array()) {
}
/**
*
* @param resource $result
* @return array
*/
public function fetchArray(&$result) {
}
public function select($table, $row, $column = null, $filter = "") {
$tscan_params = array();
if (! empty($filter)) {
MMB::debug( " filter = $filter ## <br>");
$tscan_params["filterString"] = $filter;
}
$scan = new \TScan($tscan_params);
$scanner = $this->_hbaseclient->scannerOpenWithScan("$table", $scan);
$res = array();
$idx = 0;
while ($row = $this->_hbaseclient->scannerGet($scanner)) {
$row = $row[0];
$res[$idx]["rowkey"] = $row->row;
foreach ($row->columns as $qualifier => $cell) {
$column_name = preg_replace("/^[\w]+:/", "", $qualifier);
$res[$idx][$column_name] = $cell->value;
}
$idx++;
}
return $res;
}
public function insert($table, $rowkey, $columns = array(), $values = array()) {
$cf = $this->getFirstColumnFamilyName($table);
$size = count($columns);
$mutations = array();
for ($i = 0; $i < $size; ++$i) {
$column = $columns[$i];
$value = $values[$i];
$row = new \Mutation( array(
"column" => "$cf:$column",
"value" => "$value"
));
$mutations[] = $row;
}
try {
$this->_hbaseclient->mutateRow($table, $rowkey, $mutations);
} catch (Exception $e) {
return 0;
}
return array(1);
}
public function showTables($mysql_db_name) {
$result = array();
foreach($this->_hbaseclient->getTableNames() as $name) {
array_push($result, array(0 => $name, "Tables_in_{$mysql_db_name}" => $name));
}
return $result;
}
public function getFirstColumnFamilyName($tableName) {
$columnfamilies = $this->_hbaseclient->getColumnDescriptors($tableName);
foreach ( $columnfamilies as $cf ) {
return str_replace(":", "", $cf->name);
}
}
public function getColumnDescriptors($tableName) {
return $this->_hbaseclient->getColumnDescriptors($tableName);
}
public function deleteAllRow($tableName, $rowkey) {
return $this->_hbaseclient->deleteAllRow($tableName, $rowkey);
}
public function createTable($tableName, $columnfamily_names) {
$columnfamilies = array();
if (! is_array($columnfamily_names) && is_string($columnfamily_names)) {
$columnfamily_names = array($columnfamily_names);
}
foreach ($columnfamily_names as $cfname) {
$columnfamilies[] = new \ColumnDescriptor(array(
"name" => "$cfname:",
"maxVersions" => 3,
"compression" => "NONE",
"inMemory" => 0,
"bloomFilterType" => "NONE",
"bloomFilterVectorSize" => 0,
"bloomFilterNbHashes" => 0,
"blockCacheEnabled" => 0,
"timeToLive" => -1
));
}
return $this->_hbaseclient->createTable($tableName, $columnfamilies);
}
} // end of class