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

功能介绍

将数据格式从 Triple 转成 Csv
三元组转换为key value对,setTripleRowCol 设置数据行信息的列名,这一列值相同的数据,会被合并成一个数据
setTripleColumnCol 设置为Column名称所在列名
setTripleValueCol 设置为Column值所在列名
setSchemaStr 设置输出的csv的Schema格式

参数说明

名称 中文名称 描述 类型 是否必须? 取值范围 默认值
csvCol CSV列名 CSV列的列名 String
schemaStr Schema Schema。格式为”colname coltype[, colname2, coltype2[, …]]”,例如”f0 string, f1 bigint, f2 double” String
tripleColumnCol 三元组结构中列信息的列名 三元组结构中列信息的列名 String 所选列类型为 [STRING]
tripleValueCol 三元组结构中数据信息的列名 三元组结构中数据信息的列名 String
csvFieldDelimiter 字段分隔符 字段分隔符 String “,”
handleInvalid 解析异常处理策略 解析异常处理策略,可选为ERROR(抛出异常)或者SKIP(输出NULL) String “ERROR”, “SKIP” “ERROR”
quoteChar 引号字符 引号字符 Character “””
tripleRowCol 三元组结构中行信息的列名 三元组结构中行信息的列名 String null

代码示例

Python 代码

  1. from pyalink.alink import *
  2. import pandas as pd
  3. useLocalEnv(1)
  4. df = pd.DataFrame([
  5. [1,'f1',1.0],
  6. [1,'f2',2.0],
  7. [2,'f1',4.0],
  8. [2,'f2',8.0]])
  9. data = BatchOperator.fromDataframe(df, schemaStr="row double, col string, val double")
  10. op = TripleToCsvBatchOp()\
  11. .setTripleRowCol("row")\
  12. .setTripleColumnCol("col")\
  13. .setTripleValueCol("val")\
  14. .setCsvCol("csv")\
  15. .setSchemaStr("f1 string, f2 string")\
  16. .linkFrom(data)
  17. op.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.format.TripleToCsvBatchOp;
  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 TripleToCsvBatchOpTest {
  9. @Test
  10. public void testTripleToCsvBatchOp() throws Exception {
  11. List <Row> df = Arrays.asList(
  12. Row.of(1, "f1", 1.0),
  13. Row.of(1, "f2", 2.0),
  14. Row.of(2, "f1", 4.0),
  15. Row.of(2, "f2", 8.0)
  16. );
  17. BatchOperator <?> data = new MemSourceBatchOp(df, "row int, col string, val double");
  18. BatchOperator <?> op = new TripleToCsvBatchOp()
  19. .setTripleRowCol("row")
  20. .setTripleColumnCol("col")
  21. .setTripleValueCol("val")
  22. .setCsvCol("csv")
  23. .setSchemaStr("f1 string, f2 string")
  24. .linkFrom(data);
  25. op.print();
  26. }
  27. }

运行结果

| row | csv | | —- | —- |

| 1 | 1.0,2.0 |

| 2 | 4.0,8.0 |