Java 类名:com.alibaba.alink.pipeline.dataproc.format.KvToJson
Python 类名:KvToJson

功能介绍

将数据格式从 Kv 转成 Json

参数说明

名称 中文名称 描述 类型 是否必须? 取值范围 默认值
jsonCol JSON列名 JSON列的列名 String
kvCol KV列名 KV列的列名 String
handleInvalid 解析异常处理策略 解析异常处理策略,可选为ERROR(抛出异常)或者SKIP(输出NULL) String “ERROR”, “SKIP” “ERROR”
kvColDelimiter 分隔符 当输入数据为稀疏格式时,key-value对之间的分隔符 String “,”
kvValDelimiter 分隔符 当输入数据为稀疏格式时,key和value的分割符 String “:”
reservedCols 算法保留列名 算法保留列 String[] null

代码示例

Python 代码

  1. from pyalink.alink import *
  2. import pandas as pd
  3. useLocalEnv(1)
  4. df = pd.DataFrame([
  5. ['1', '{"f0":"1.0","f1":"2.0"}', '$3$0:1.0 1:2.0', 'f0:1.0,f1:2.0', '1.0,2.0', 1.0, 2.0],
  6. ['2', '{"f0":"4.0","f1":"8.0"}', '$3$0:4.0 1:8.0', 'f0:4.0,f1:8.0', '4.0,8.0', 4.0, 8.0]])
  7. data = BatchOperator.fromDataframe(df, schemaStr="row string, json string, vec string, kv string, csv string, f0 double, f1 double")
  8. op = KvToJson()\
  9. .setKvCol("kv")\
  10. .setReservedCols(["row"])\
  11. .setJsonCol("json")\
  12. .transform(data)
  13. 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.source.MemSourceBatchOp;
  4. import com.alibaba.alink.pipeline.dataproc.format.KvToJson;
  5. import org.junit.Test;
  6. import java.util.Arrays;
  7. import java.util.List;
  8. public class KvToJsonTest {
  9. @Test
  10. public void testKvToJson() throws Exception {
  11. List <Row> df = Arrays.asList(
  12. Row.of("1", "{\"f0\":\"1.0\",\"f1\":\"2.0\"}", "$3$0:1.0 1:2.0", "f0:1.0,f1:2.0", "1.0,2.0", 1.0, 2.0)
  13. );
  14. BatchOperator <?> data = new MemSourceBatchOp(df,
  15. "row string, json string, vec string, kv string, csv string, f0 double, f1 double");
  16. BatchOperator op = new KvToJson()
  17. .setKvCol("kv")
  18. .setReservedCols("row")
  19. .setJsonCol("json")
  20. .transform(data);
  21. op.print();
  22. }
  23. }

运行结果

| row | json | | —- | —- |

| 1 | {“f0”:”1.0”,”f1”:”2.0”} |

| 2 | {“f0”:”4.0”,”f1”:”8.0”} |