HBase和集成测试

2024-05-20 17:32:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Spark项目,它使用HBase作为键/值存储。我们从整体上开始实施更好的CI/CD实践,我正在编写一个python客户机来运行针对自包含AWS环境的集成测试。
而我可以很容易地提交我们的火花作业,并运行他们作为电子病历的步骤。我还没有找到与python中的HBase交互的好方法。我的目标是能够针对示例HDFS数据运行我们的代码,然后在HBase中验证我是否得到了预期的结果。有人能提出一个好的方法吗?

另外,我的测试集非常小。如果我能简单地将整个HBase表读入内存并进行检查,我也会很高兴。感谢社区的意见。你知道吗


Tags: 项目方法ciaws客户机环境作业电子
1条回答
网友
1楼 · 发布于 2024-05-20 17:32:43

下面是使用Happybase API和Thrift Server从Python读取HBase数据的简单方法。你知道吗

要在Hbase服务器上启动thrift server:

/YOUR_HBASE_BIN_DIR/hbase-daemon.sh start thrift

然后从Python:

import happybase

HOST = 'Hbase server host name here'
TABLE_NAME = 'MyTable'
ROW_PREFIX = 'MyPrefix'
COL_TXT = 'CI:BO'.encode('utf-8') # column family CI, column name BO (Text)
COL_LONG = 'CI:BT'.encode('utf-8') # column family CI, column name C (Long)

conn = happybase.Connection(HOST) # uses default port 9095, but provide second arg if non-default port
myTable = conn.table(TABLE_NAME)

for rowID, row in myTable.scan(row_prefix=ROW_PREFIX.encode('utf-8')): # or leave empty if want full table scan
    colValTxt = row[COL_TXT].decode('utf-8')
    colValLong = int.from_bytes(row[COL_LONG], byteorder='big')
    print('Row ID: {}\tColumn Value: {}'.format(rowID, colValTxt))
print('All Done')

正如在评论中所讨论的,如果您尝试将内容传递给Spark workers,这将不起作用,因为上面的HBase连接是不可序列化的。所以只能从主程序运行这种类型的代码。如果你想办法分享!你知道吗

相关问题 更多 >