该文档涉及的组件

    随机生成结构数据源 (RandomTableSourceStreamOp)

    Java 类名:com.alibaba.alink.operator.stream.source.RandomTableSourceStreamOp

    Python 类名:RandomTableSourceStreamOp

    功能介绍

    随机生成流式的表数据。
    支持5种随机数据生成方法:uniform, uniform_open, gauss, weight_set 和 poisson

    使用方法

    setOutputColConfs(列配置信息参数)的含义和编写方法如下

    参数示例 生成方法
    uniform(1,2,nullper=0.1) 1到2闭区间上服从均匀分布,有10%的数据为null的随机数序列
    uniform_open(1,2) 1到2开区间上服从均匀分布的随机数序列
    weight_set(1.0,1.0,5.0,2.0) 由1和5组成的随机序列,生成概率为1:2
    gauss(0,1) 满足均值为0、方差为1的正态分布的随机数序列
    poisson(0.5) 满足lambda为0.5的泊松分布的随机序列

    参数说明

    名称 中文名称 描述 类型 是否必须? 取值范围 默认值
    maxRows 输出表行数目最大值 输出数据流的表的行数目的最大值,整型 Long ✓
    numCols 输出表列数目 输出表中列的数目,整型 Integer ✓
    idCol id 列名 列名,若列名非空,表示输出表中包含一个整形序列id列,否则无该列 String “num”
    outputColConfs 列配置信息 表示每一列的数据分布配置信息 String null
    outputCols 输出列名数组 字符串数组,当参数不设置时,算法自动生成 String[] null
    timePerSample 每条样本流过的时间 每两条样本间的时间间隔,单位秒 Double null
    timeZones 每条样本流过的时间区间 用来控制样本输出频率的参数,每两条样本的输出间隔在这个区间范围内,单位秒 Double[] null

    代码示例

    Python 代码

    from pyalink.alink import *
    
    import pandas as pd
    
    useLocalEnv(1)
    
    # 生成测试数据,该数据符合高斯分布
    data = RandomTableSourceStreamOp() \
                    .setNumCols(4) \
                    .setMaxRows(10) \
                    .setIdCol("id") \
                    .setOutputCols(["group_id", "f0", "f1", "f2"]) \
                    .setOutputColConfs("group_id:weight_set(111.0,1.0,222.0,1.0);f0:gauss(0,2);f1:gauss(0,2);f2:gauss(0,2)");
    

    Java 代码

    import com.alibaba.alink.operator.stream.StreamOperator;
    import com.alibaba.alink.operator.stream.source.RandomTableSourceStreamOp;
    import org.junit.Test;
    
    public class RandomTableSourceStreamOpTest {
    	@Test
    	public void testRandomTableSourceStreamOp() throws Exception {
    		StreamOperator <?> data = new RandomTableSourceStreamOp()
    			.setNumCols(4)
    			.setMaxRows(10L)
    			.setIdCol("id")
    			.setOutputCols(new String[] {"group_id", "f0", "f1", "f2"})
    			.setOutputColConfs("group_id:weight_set(111.0,1.0,222.0,1.0);f0:gauss(0,2);f1:gauss(0,2);f2:gauss(0,2)");
    
    	}
    }
    

    运行结果

    group_id f0 f1 f2
    0 -0.9964239045050353 0.49718679973825497 0.1792735119342329
    1 -0.6095874515728233 -0.4127806660140688 3.0630804909945755
    2 2.213734518739278 -0.8455555927440792 -1.600352103528522
    3 -2.815758921864138 0.1660690040206056 2.5530930456104337
    4 0.4511700080470712 -0.3189014028331945 1.074516449728338
    5 -0.04526610697025353 0.9372115152797922 0.8801699948291315
    6 1.399940708626108 0.094717796828264 1.8070419026410982
    7 -1.9583513162921702 2.8640034727735295 0.8341853784130754
    8 -1.507498072024416 -0.1315003650747711 -3.695551497151364
    9 -0.5509621008083586 -0.5880629518273883 1.5237202683647566

    备注

    * outputColConfs 参数的例子:
    
    "f0:uniform_open(1,2,nullper=0.1);f3:uniform(1,2,nullper=0.1);f1:gauss(0,1);f4:weight_set(1.0,1.0,2.0,5.0,nullper=0.1);f2:poisson(0.5, nullper=0.1)"
    
    其中分号分割不同列的信息,每列信息中冒号前面是列名,冒号后的字符串是列的分布类型,小括号中的信息是分布参数,nullper表示的是数据中null值的占比