PHP клиент для работы с HBase и Hive

При работе с кластером Hadoop, может возникнуть необходимость обратится к данным, которые хранятся в HBase и Hive в рамках Hadoop кластера. Для этого можно воспользоваться Apache Thrift фреймворком, который обеспечивает кросс-языковое решения обмена данными.

Для доступа к HBase и Hive с PHP можно использовать php trhift клиент. Реализовывать самому этот клиент может быть долго и сложно. Поэтому лучше использовать готовые наработки. К примеру вот хорошая реализация клиента на PHP.
После скачивания файлов можно работать с данными. Попробуем реализовать пару простых методов доступа к данным:
//thrift php
$GLOBALS[‘THRIFT_ROOT’]=dirname(__FILE__).‘/thrift/src’;
require_once($GLOBALS[‘THRIFT_ROOT’].‘/Thrift.php’);
require_once($GLOBALS[‘THRIFT_ROOT’].‘/transport/TSocket.php’);
require_once($GLOBALS[‘THRIFT_ROOT’].‘/transport/TBufferedTransport.php’);
require_once($GLOBALS[‘THRIFT_ROOT’].‘/protocol/TBinaryProtocol.php’);
//hbase thrift
require_oncedirname(__FILE__).‘/thrift/Hbase.php’;
//hive thrift
require_oncedirname(__FILE__).‘/thrift/ThriftHive.php’;
/*
HBase php thrift client
*/
//Создание соединения
$socket=newTSocket(‘localhost’,9090);
$transport=newTBufferedTransport($socket);
$protocol=newTBinaryProtocol($transport);
$client=newHbaseClient($protocol);
$transport->open();
//show all tables
$tables=$client->getTableNames();
foreach($tablesas$name){
echo(”  found: {$name}\n”);
}
//Создание таблицы
try{
$columns=array(newColumnDescriptor(array(
‘name’=>;‘colFamily:’,
‘maxVersions’=>10)));
$client->createTable(“tableName”,$columns);
}catch(AlreadyExists$ae){
echo(“WARN: {$ae->;message}\n”);
}
//Вставка данных
$mutations=array(
newMutation(array(
‘column’=>‘colFamily:Col’,
‘value’=>‘value123’
)),
);
$client->mutateRow(“tableName”,“ID_1237846634624”,$mutations);
//get table data
$row=$client->getRow(“tableName”,“ID_1237846634624”);
/*
Hive php thrift client
*/
//Открытие соединения
$transport=newTSocket(“localhost”,10000);
$protocol=newTBinaryProtocol($transport);
$client=newThriftHiveClient($protocol);
$transport->open();
//Показать все таблицы
$client->execute(‘SHOW TABLES’);
$tables=$client->fetchAll();
foreach($tablesas$name){
echo(” found: {$name}\n”);
}
//Создание Hive таблицы с mapping-ом на Hbase таблицу 
$mapping=‘CREATE EXTERNAL TABLE tableName(Col String, Col1 String)
STORED BY \’org.apache.hadoop.hive.hbase.HBaseStorageHandler\’
WITH SERDEPROPERTIES (“hbase.columns.mapping” = “colFamily:Col, colFamily:Col”)
TBLPROPERTIES(“hbase.table.name” = “tableName”)’;
$client->execute($mapping);
//Запрос на выборку к таблице
$client->execute(‘SELECT * FROM tableName Limit 10’);
var_dump($client->fetchAll());


Полезные ссылки:
HBase and Hive Thrift PHP Client
Apache Thrift

Коментарі

Популярні дописи з цього блогу

Минимальные требование для кластера Hadoop(with Spark)

Apache Spark - основные команды

Apache Spark Resource Management и модель приложений от YARN