PHP Stargate istemcisi kullanıyorsanız Hbase tabloya veri eklemek için nasıl

1 Cevap php

Ben bir Hbase küme yüklemek etrafında oynuyorum ve Stargate DİNLENME arabirimi üzerinden verilere erişmek için çalışıyorum. Salt okunur fonksiyonların çoğu (yani sürüm oluyor, tablolar listesi, meta veri, vb) güzel çalışıyorlar. Ancak, ben aslında oluşturduğunuz herhangi tablolara veri ekleme ile sorun yaşıyorum. İşte ben bugüne kadar ne var olduğunu ....

Aşağıdaki gibi, iki sütunlu bir kukla tablo oluşturulur:

$table_schema = <<<SCHEMA
    <TableSchema name="mytable" IS_META="false" IS_ROOT="false">
        <ColumnSchema name="info" BLOCKSIZE="65536" BLOOMFILTER="false" BLOCKCACHE="false" COMPRESSION="NONE" LENGTH="2147483647" VERSIONS="1" TTL="-1" IN_MEMORY="false" />
        <ColumnSchema name="url" BLOCKSIZE="65536" BLOOMFILTER="false" BLOCKCACHE="false" COMPRESSION="NONE" LENGTH="2147483647" VERSIONS="1" TTL="-1" IN_MEMORY= "false"/>
    </TableSchema>
SCHEMA;

require_once "HTTP/Request.php";
$request = new HTTP_Request("http://localhost:8080");
$request->setMethod(HTTP_REQUEST_METHOD_PUT);
$request->addHeader("Accept", "text/xml");
$request->addHeader("Accept", "text/xml");
$request->setBody($table_schema);
$request->sendRequest();

Tablo oluşturma çalışıyor. Sonra, benim yeni bir tabloya bazı veri eklemek istiyorum. İşte ben bunu denemeyin nasıl:

$row_key = base64_encode("higgilty");
$column_name = base64_encode("info");
$value = base64_encode("Here is a test value");

$data = <<<DATA
     <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
     <CellSet>
         <Row key="$row_key">
             <Cell column="$column_name">
                 $value
             </Cell>
         </Row>
     </CellSet>
DATA;

require_once "HTTP/Request.php";
$request = new HTTP_Request("http://localhost:8080/mytable/higgilty");
$request->setMethod(HTTP_REQUEST_METHOD_PUT);
$request->addHeader("Accept", "text/xml");
$request->addHeader("Accept", "text/xml");
$request->setBody($data);
$request->sendRequest();

Bu istek sonucunda aşağıdaki istisna, bir 503 hata verir:

[...] org.apache.hadoop.hbase.regionserver.NoSuchColumnFamilyException: Column family  does not exist in region [...]

Hata oldukça açıktır, ama benim şema yukarıdaki haberi yanlış ne olduğundan emin değilim.

Ben Thrift paketini kullanarak ve yerine STARBASE kullanarak gerekli PHP müşteri dosyaları oluşturmada daha iyiyim eğer ben de merak ediyorum? Herkes bu ile herhangi bir deneyime sahiptir ben sizden duymak isteriz.

Herhangi bir yardım büyük beğeni topluyor.

1 Cevap

Niteleyici çifti: Bir aile olarak sütun adını belirtmeniz gerekir. Belirttiğiniz "ColumnSchema" sadece aile adını verir, böylece, örneğin $column_name = base64_encode("info:column1");, diyebilirim