flink1.11中Application 模式提交任务 yarn报错

flink1.11中Application模式提交任务到yarn时,提示报错信息:

java.lang.RuntimeException:Couldn’t deploy Yarn session cluster

The YARN application unexpectedly switched to state FAILED during deployment.

解决办法:

错误原因:虚拟内存超过限制
处理方式:yarn-site.xml中注释以下内容:

<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Flink 1.11,Kafka SQL Connector可以通过使用`TIMESTAMP_LTZ`类型来表示Kafka消息的时间戳。这个类型可以直接从Kafka的消息获取时间戳,并将其转换为UTC时间。 要使用`TIMESTAMP_LTZ`类型,需要在创建表时指定相应的字段类型,例如: ``` CREATE TABLE kafka_table ( `timestamp` TIMESTAMP_LTZ(3), `key` STRING, `value` STRING, WATERMARK FOR `timestamp` AS `timestamp` - INTERVAL '5' SECOND ) WITH ( 'connector' = 'kafka', 'topic' = 'my_topic', 'properties.bootstrap.servers' = 'localhost:9092', 'scan.startup.mode' = 'earliest-offset', 'format' = 'json' ) ``` 在这个表,`timestamp`字段被声明为`TIMESTAMP_LTZ`类型,并且在`WATERMARK`语句定义了一个水印来指示数据流的事件时间。在这个示例,水印是通过将事件时间减去5秒来计算的。 在Flink,可以使用`org.apache.flink.formats.json.JsonNode`类型来解析JSON格式的消息。例如: ``` StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env); tableEnv.createTemporaryView("kafka_table", env .addSource(new FlinkKafkaConsumer<>("my_topic", new JSONKeyValueDeserializationSchema(false), props)) .map(record -> { JsonNode value = record.value(); long timestamp = value.get("timestamp").asLong(); ZonedDateTime zonedDateTime = Instant.ofEpochMilli(timestamp).atZone(ZoneId.of("UTC")); return Row.of(Timestamp.from(zonedDateTime.toInstant()), value.get("key").asText(), value.get("value").asText()); }), $("timestamp"), $("key"), $("value")); ``` 在这个示例,`JSONKeyValueDeserializationSchema`用于将JSON格式的消息解析为`JsonNode`对象,并且从获取时间戳。然后,使用`Instant.ofEpochMilli`将时间戳转换为Java 8的`Instant`对象,并将其转换为UTC时间。最后,使用`Timestamp.from`将`Instant`对象转换为Flink SQL Connector所需的`java.sql.Timestamp`类型。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值