Java 类名:com.alibaba.alink.operator.batch.dataproc.HugeLookupBatchOp
Python 类名:HugeLookupBatchOp

功能介绍

支持大数据量的查找功能,可实现两种数据按照某些列的合并操作,类似于数据的LEFT JOIN功能。
分别指定模型数据和输入数据中查找等值的Key列,模型数据中需要拼接到输入数据中的列名,最终输出数据数据列 + 模型数据拼接的列

参数说明

名称 中文名称 描述 类型 是否必须? 取值范围 默认值
selectedCols 选择的列名 计算列对应的列名列表 String[]
mapKeyCols Key列名 模型中对应的查找等值的列名 String[] null
mapValueCols Values列名 模型中需要拼接到样本中的列名 String[] null
outputCols 输出结果列列名数组 输出结果列列名数组,可选,默认null String[] null
reservedCols 算法保留列名 算法保留列 String[] null
numThreads 组件多线程线程个数 组件多线程线程个数 Integer 1
modelStreamUpdateMethod 模型更新方法 模型更新方法,可选COMPLETE(全量更新)或者 INCREMENT(增量更新) String “COMPLETE”, “INCREMENT” “COMPLETE”

代码示例

Python 代码

  1. from pyalink.alink import *
  2. import pandas as pd
  3. useLocalEnv(1)
  4. data_df = pd.DataFrame([
  5. [10, 2.0],
  6. [1, 2.0],
  7. [-3, 2.0],
  8. [5, 1.0]
  9. ])
  10. inOp = BatchOperator.fromDataframe(data_df, schemaStr='f0 int, f1 double')
  11. model_df = pd.DataFrame([
  12. [1, "value1"],
  13. [2, "value2"],
  14. [5, "value5"]
  15. ])
  16. modelOp = BatchOperator.fromDataframe(model_df, schemaStr="key_col int, value_col string")
  17. HugeLookupBatchOp()\
  18. .setMapKeyCols(["key_col"])\
  19. .setMapValueCols(["value_col"])\
  20. .setSelectedCols(["f0"])\
  21. .linkFrom(modelOp, inOp)\
  22. .print()

Java 代码

  1. import org.apache.flink.types.Row;
  2. import com.alibaba.alink.operator.batch.BatchOperator;
  3. import com.alibaba.alink.operator.batch.dataproc.HugeLookupBatchOp;
  4. import com.alibaba.alink.operator.batch.source.MemSourceBatchOp;
  5. import org.junit.Test;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. public class HugeLookupBatchOpTest {
  9. @Test
  10. public void testHugeLookupBatchOp() throws Exception {
  11. List <Row> data_df = Arrays.asList(
  12. Row.of(10, 2.0),
  13. Row.of(1, 2.0),
  14. Row.of(-3, 2.0),
  15. Row.of(5, 1.0)
  16. );
  17. BatchOperator <?> inOp = new MemSourceBatchOp(data_df, "f0 int, f1 double");
  18. List <Row> model_df = Arrays.asList(
  19. Row.of(1, "value1"),
  20. Row.of(2, "value2"),
  21. Row.of(5, "value5")
  22. );
  23. BatchOperator <?> modelOp = new MemSourceBatchOp(model_df, "key_col int, value_col string");
  24. new HugeLookupBatchOp()
  25. .setMapKeyCols("key_col")
  26. .setMapValueCols("value_col")
  27. .setSelectedCols("f0")
  28. .linkFrom(modelOp, inOp)
  29. .print();
  30. }
  31. }

运行结果

| f0 | f1 | value_col | | —- | —- | —- |

| 10 | 2.0 | null |

| 1 | 2.0 | value1 |

| -3 | 2.0 | null |

| 5 | 1.0 | value5 |