使用Flink消费Kafka中topic为ods_mall_data的数据,根据数据中不同的表将数据分别分发至kafka的DWD层的fact_order_master、fact_order_detail的Topic中(只获取data的内容,具体的内容格式考生请自查),其他的表则无需处理,其中请对进入到fact_order_master的内容进行排序,同时迟到容忍度设置为2分钟;
因为要将数据分发至不同topic中,我们可以建立这两个样例类,1.重点:
modified_time这个时间字段不要用timestamp类型,否则会出现
Gson解析不出来的现象
所以我改成了String类型,就此解决了
case class order_master(order_id: Int, order_sn: String, customer_id: Int, shipping_user: String, province: String, city: String, address: String, order_source: Int, payment_method: Int, order_money: Double, district_money: Double, shipping_money: Double, payment_money: Double, shipping_comp_name: String, shipping_sn: String, create_time: String, shipping_time: String, pay_time: String, receive_time: String, order_status: String, order_point: Int, invoice_title: String, modified_time: String)
case class order_detail(order_detail_id: Int, order_sn: String, product_id: Int, product_name: String, product_cnt: Int, product_price: Double, average_cost: Double, weight: Double, fee_money: Double, w_id: Int, create_time: String, modified_time: String)
2.重点:解析这种json数据类型的数据时
由于他json数据中,还包了一个json格式的数据(就是这个data),所以构建这个样例类的时候data类型要用JsonObject(Gson包下的,别导错了!)
case class KafakaData(database: String, table: String, @SerializedName("type") typeOf: String, ts: Long, xid: Long, commit: Boolean, data: JsonObject)
其中@SerializedName("type") typeOf :String 这句是因为原数据中有个key值为“type”,但是这是个关键字,所以用typeOf来替换!