累积适配器

AccumuloAdapter 模块从 Accumulo 键/值存储中读取数据并生成一个包含解析值的 NumPy 数组。

  • AccumuloAdapter 引擎是用 C 编写的,以确保解析返回的数据的速度与从源读取数据的速度一样快。数据以小块的形式读取和解析,而不是一次将整个数据读入内存。
  • Python 切片符号可用于指定要从数据源读取的记录子集。

适配器方法

Accumulo 适配器构造函数:

AccumuloAdapter (server='localhost', port=42424, username='', password='', table=None, field_type='f8', start_key=None, stop_key=None, start_key_inclusive=True, stop_key_inclusive=False, missing_values=无,fill_value=None):

创建用于连接到 Accumulo 键/值存储的适配器。
服务器:累积服务器地址
端口:累积端口
用户名:累积用户名
密码:累积用户密码
table:要从中读取数据的累积表
field_type: str, NumPy dtype 将表值解释为
start_key: str, 开始扫描的记录键
stop_key: str, 扫描将停止的记录键
start_key_inclusive:如果为 True,则 start_key 是包含的(默认为 True)
stop_key_inclusive:如果为 True,stop_key 是包含的(默认为 False)
missing_values:列表,缺失值字符串。表中等于这些字符串之一的任何值都将替换为 fill_value。
fill_value:扫描时用来替换缺失值的填充值
关闭()
关闭与数据库的连接。

AccumuloAdapter 对象支持数组切片:

读取所有记录:adapter[:]
读取前十条记录:adapter[0:10]
读取最后一条记录:adapter[-1]
读取所有其他记录:adapter[::2]

适配器属性

field_type(只读)
获取输出 NumPy 数组的 dtype
开始键
获取/设置将开始读取/扫描的记录的键。
start_key_inclusive 属性指定此键是否包含
(默认包括在内)。
停止键
获取/设置将停止读取/扫描的记录的键。
stop_key_inclusive 属性指定此键是否包含
(默认为独占)。
start_key_inclusive
切换是否包含开始键。默认为真。
stop_key_inclusive
切换停止键是否包含在内。默认值为假。
缺失值
获取/设置缺失值字符串。Accumulo 表中匹配一个的任何值
这些字符串中的一个将替换为 fill_value。
填充值
用于替换 missing_values 的填充值。填充值类型应匹配
指定的输出类型。

基本用法

为数据源创建 AccumuloAdapter 对象:

>>> import iopro
>>> adapter = iopro.AccumuloAdapter(server='172.17.0.1',
                                    port=42424,
                                    username='root',
                                    password='password',
                                    field_type='f4',
                                    table='iopro_tutorial_data')

IOPro 适配器使用切片来检索数据。要从表或查询中检索记录,可以使用标准的 NumPy 切片符号:

>>> # read all records
>>> array = adapter[:]
array([ 0.5,  1.5,  2.5,  3.5,  4.5], dtype=float32)
>>> # read first three records
>>> array = adapter[0:3]
array([ 0.5,  1.5,  2.5], dtype=float32)
>>> # read every other record from the first four records
>>> array = adapter[:4:2]
array([ 0.5,  2.5], dtype=float32)

Accumulo 适配器不支持从最后一条记录开始查找。

field_types 属性可用于查看输出 NumPy 数组的类型:

>>> adapter.field_type
'f4'

由于 Accumulo 本质上是一个键/值存储,因此可以根据键过滤结果。例如,使用 start_key 属性的开始键。这将检索键等于或大于开始键的所有值。

>>> adapter.start_key = 'row02'
>>> adapter[:]
array([ 1.5,  2.5,  3.5,  4.5], dtype=float32)

同样,停止键。这将检索键小于停止键但等于或大于开始键的所有值。

>>> adapter.stop_key = 'row04'
>>> adapter[:]
array([ 1.5,  2.5], dtype=float32)

默认情况下,开始键是包含的。这可以通过将 start_key_inclusive 属性设置为 False 来更改。

>>> adapter.start_key_inclusive = False
>>> adapter[:]
array([ 2.5], dtype=float32)

默认情况下,停止键是独占的。这可以通过将 stop_key_inclusive 属性设置为 True 来更改。

>>> adapter.stop_key_inclusive = True
>>> adapter[:]
array([ 2.5,  3.5], dtype=float32)

Accumulo 适配器可以处理缺失值。如果知道字符串 'NA' 和 'nan' 表示缺失的浮点值,则可以使用 missing_values 属性告诉适配器将这些字符串视为缺失值:此外,fill_value 属性可用于指定要使用的值替换缺失值。

>>> adapter = iopro.AccumuloAdapter('172.17.0.1', 42424, 'root', 'password', 'iopro_tutorial_missing_data', field_type='S10')
>>> adapter[:]
array([b'NA', b'nan'], dtype='|S10')
>>> adapter = iopro.AccumuloAdapter('172.17.0.1', 42424, 'root', 'secret', 'iopro_tutorial_missing_data', field_type='f8')
>>> adapter.missing_values = ['NA', 'nan']
>>> adapter.fill_value = np.nan
>>> adapter[:]
array([ nan,  nan])
关闭数据库连接:
>>> adapter.close()