flink blink_planner array解析,列传行

CREATE TABLE source_table (

 event_time_line array<ROW (

  `rule_name` VARCHAR,

  `count` VARCHAR

 )>

) WITH (

 'connector.type' = 'kafka',

 'connector.version' = 'universal',

 'connector.startup-mode' = 'earliest-offset',

 'connector.topic' = 'topic_test_1',

 'connector.properties.zookeeper.connect' = 'localhost:2181',

 'connector.properties.bootstrap.servers' = 'localhost:9092',

 'update-mode' = 'append',

 'format.type' = 'json',

 'format.derive-schema' = 'true'

);
import org.apache.flink.api.common.typeinfo.TypeInformation;
import org.apache.flink.api.common.typeinfo.Types;
import org.apache.flink.api.java.typeutils.RowTypeInfo;
import org.apache.flink.table.functions.TableFunction;
import org.apache.flink.types.Row;

/**
 * 列 转 行
 */
public class ColumnToLine extends TableFunction<Row> {

    public ColumnToLine() {
    }

    public void eval(Row[] rows) {
     for (Row row:rows){
         collector.collect(Row.of(row.getField(0),row.getField(1)));
     }
    }

    @Override
    public TypeInformation<?>[] getParameterTypes(Class<?>[] signature) {
        return new RowTypeInfo(Types.OBJECT_ARRAY(Types.ROW(Types.STRING, Types.STRING))).getFieldTypes();
    }


    @Override
    public TypeInformation<Row> getResultType() {
        return Types.ROW(Types.STRING, Types.STRING);
    }
}


select types,name,counts from source_table,lateral table (column_to_line(enen_time_line)) as T(counts,name)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值