关于sparkstream代码更改,造成从ck里面启动不了了

        当Spark Streaming的代码修改后启动时(directStream的高级api,信息保存在ck中),反序列化Checkpoint目录中的数据失败,所以Kafka offset会丢失,此时不知道从哪里消费Kafka的数据,所以我们要将Kafka offset保存到ZooKeeper中一份,当Spark Streaming优雅停止后,删除Checkpoint目录然后从ZooKeeper中读取Kafka offset再启动SparkSteaming。

       在低级api获取ssc对象的代码中,先进行判断文件夹存在不存在,如果存在,从zk里面读取offset就行了,关闭后ck文件夹就会存在,序列化的有数据。第二次启动,文件夹就存在,就走高级api来读取就行了(zk里面存有值)

CK803S是一款常用的单片机扩展模块,它通常用于Arduino或类似平台,支持通过I2C或SPI通信接口连接外部设备,比如8080液晶屏。如果你想通过I2C方式配置8080 LCD,首先你需要确保你的CK803S集成了I2C功能,并且已经正确地连接了LCD模块。 以下是一个简单的示例代码,假设你已经在CK803S上设置了I2C地址,且LCD使用的是常见的16x2字符型液晶: ```c++ #include <Wire.h> // 引入Wire库,用于处理I2C通信 // LCD模块的I2C地址,通常是0x27或0x2F,取决于具体型号 #define LCD_I2C_ADDRESS 0x27 void setup() { Wire.begin(); // 初始化I2C通信 delay(100); // 给I2C总线一些时间初始化 // 显示模式设置 writeCommand(LCD_DISPLAYON | LCD_ENTRYMODESET | LCD_CLEARDISPLAY); // 设置文本方向(0=纵向,1=横向) writeCommand(LCD_ENTRYLEFT); } void loop() { writeCommand(LCD_CURSOR_HOME); // 清除光标位置 writeString("Hello, CK803S!"); // 写入字符串 delay(1000); // 等待一秒钟 clearDisplay(); // 清除屏幕内容 } // 功能函数:发送一个命令到LCD void writeCommand(unsigned char command) { Wire.beginTransmission(LCD_I2C_ADDRESS); Wire.write(command); Wire.endTransmission(); delayMicroseconds(500); } // 功能函数:发送一个字符串到LCD void writeString(const char *text) { for (int i = 0; text[i] != '\0'; ++i) { writeCommand(text[i]); delayMicroseconds(500); } writeCommand(LCD_ENTER); // 结束字符串并显示 } // 功能函数:清除屏幕 void clearDisplay() { writeCommand(LCD_CLEARDISPLAY); } ``` 注意:实际应用中,你可能需要根据具体的8080 LCD数据手册调整某些命令,如行/列数、背光控制等。同时,务必检查I2C连接是否正确以及CK803S是否已正确设置I2C地址。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值