累积适配器¶
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()