在使用来自snappy shell的kafka创建火花流表时,我发现了一个问题。
&#39;例外&#39;无效输入&#39; C&#39;,预期dmlOperation,insert,withIdentifier,select或put(第1行,第1列):&#39; < /强>
参考:http://snappydatainc.github.io/snappydata/streamingWithSQL/#spark-streaming-overview
这是我的sql:
CREATE STREAM TABLE if not exists sensor_data_stream
(sensor_id string, metric string)
using kafka_stream
options (
storagelevel 'MEMORY_AND_DISK_SER_2',
rowConverter 'io.snappydata.app.streaming.KafkaStreamToRowsConverter',
zkQuorum 'localhost:2181',
groupId 'streamConsumer',
topics 'test:01');
shell似乎不喜欢第一个字符&#39; C&#39;的脚本。我尝试使用以下命令执行脚本:
snappy> run '/scripts/my_test_sensor_script.sql';
任何帮助表示赞赏!
答案 0 :(得分:3)
文档和实际语法存在一些不一致。正确的语法是:
CREATE STREAM TABLE sensor_data_stream if not exists (sensor_id string,
metric string) using kafka_stream
options (storagelevel 'MEMORY_AND_DISK_SER_2',
rowConverter 'io.snappydata.app.streaming.KafkaStreamToRowsConverter',
zkQuorum 'localhost:2181',
groupId 'streamConsumer', topics 'test:01');
您需要做的另一件事是为您的数据编写行转换器
答案 1 :(得分:0)
Mike,您需要通过实现以下特征 -
来创建自己的rowConverter类trait StreamToRowsConverter extends Serializable {
def toRows(message: Any): Seq[Row]
}
然后在DDL中指定rowConverter完全限定的类名。 rowConverter特定于架构。 &#39; io.snappydata.app.streaming.KafkaStreamToRowsConverter&#39;它只是一个占位符类名,应该由您自己的rowConverter类替换。