我正在使用curl 通过 REST 访问 Hbase。我在将数据插入 Hbase 时遇到问题。我遵循了 Stargate 文档,但是当我遵循相同的语法时,它给了我 400/405 错误请求和方法不允许错误。我已经粘贴了下面的命令。请告诉我哪里出错了。
星际之门文档说
POST /<table>/<row>/<column> (:qualifier)?/<timestamp>
curl -H "Content-Type: text/xml" --data '[...]' http://localhost:8000/test/testrow/test:testcolumn
我的curl命令如下:
curl -H "Content-Type: text/xml" --data '[<CellSet><Row key="111"><Cell column="f1">xyz</Cell></Row></CellSet>]' http://localhost:8080/mytable/row/fam
执行此操作的正确方法是什么?因为这给了我错误的请求错误。
此外,我在 Python 客户端中尝试相同的操作。它给了我 ColumnFamilyNotFoundException。我正在读取要从文件传递到星门服务器的 Xml 数据。代码如下。
url = 'http://localhost:8080/mytable/row/fam'
f = open('example.xml', 'r')
xmlData = f.read()
r = requests.post(url, data=xmlData, headers=headers)
example.xml 具有以下内容:
<CellSet>
<Row key="111">
<Cell column="fam:column1">
xyz
</Cell>
</Row>
</CellSet>
最佳答案
这是一个非常简单的错误。 Hbase 期望每个值都采用 Base64 编码。键和 columnfamily:column 在输入 xml 之前必须进行 base64 编码。
关于python - 使用 Stargate Rest 将数据插入 Hbase,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10006452/