23. SparkSQL - The correlated scalar subquery can only contain equality predicates

23.

SparkSQL - The correlated scalar subquery can only contain equality predicates

https://stackoverflow.com/questions/41631199/sparksql-the-correlated-scalar-subquery-can-only-contain-equality-predicates

写spark Sql时,用到了嵌套select查询,但sql解析报错,究其原因,和spark本身sql解析机制有关,解决办法是:

改写原有sql即可。下面给出我的一个demo

##有个需求:填充非交易日股票价格,那么需要找到离非交易日最近的那个交易日股价。

###########
# 报错sql
 val wrongDF = ss.sql("""
                             select a.stock_id, a.code, a.date_id, a.date_value, 
                             (select max(b.date_id)                          
在Spring Boot集成RabbitMQ时,使用publisher-confirm(发布者确认)功能可以增强消息的可靠性和准确性。其中,`type: correlated`意味着每个发布的消息都会有一个唯一的标识符,称为“correlation id”,它关联到接收方的响应。当消息被成功确认时,这个correlation id会被用于找到相应的响应。 1. **开启Publisher Confirms**:在发送消息时,你需要设置`publisher-confirms`为true,这会在发送消息后等待接收确认: ```java rabbitTemplate.setPublisherReturns(true); rabbitTemplate.setPublisherConfirmations(true); ``` 2. **设置correlationId**:每条发送的消息都应该包含一个`correlationId`,以便于后续验证。可以在消息头或正文里设置: ```java Map<String, Object> headers = new HashMap<>(); headers.put("correlation-id", someUniqueId); // 替换为生成的实际唯一ID String routingKey = ...; Object payload = ...; rabbitTemplate.convertAndSend("exchangeName", routingKey, payload, headers); ``` 3. **监听确认和拒绝**:创建一个监听器来处理来自消费者的确认或拒绝(negative acknowledgment)。消费者需要设置`consumerCancelled`属性为true,以便监听取消请求: ```java @Bean public SimpleMessageListenerContainer listenerContainer() { SimpleMessageListenerContainer container = new SimpleMessageListenerContainer(); container.setConnectionFactory(rabbitConnectionFactory()); container.setQueueNames("confirmQueue"); container.setMessageConverter(converter()); container.setConfirmCallback(new RabbitAdminConfirmedCallbackAdapter() { @Override public void confirmed(String correlationId, boolean multiple) { System.out.println("Received confirmation for correlationId: " + correlationId); } @Override public void rejected(String correlationId, String rejectionReason, Throwable cause) { System.err.println("Rejected with reason: " + rejectionReason); } }); return container; } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值