我正在尝试使用 nifi 将 mysql 表数据迁移到 cassandra。附上我在 nifi 中尝试过的屏幕截图,因为我坚持 putCassandraQl 命令,因为它抛出了附加屏幕截图中提到的错误。请帮助我,因为我需要添加更多步骤。
1 回答
PutCassandraQL 要求流文件包含 CQL 语句,您在其中传递从 QueryDatabaseTable 获取的 Avro 记录,或者在尝试使用 ReplaceText 修改内容之后。
尝试以下操作:
QDT -> SplitAvro -> ConvertAvroToJSON -> ConvertJSONToSQL -> ReplaceText(将 SQL 更改为 CQL) -> PutCassandraQL
编辑:PutCassandraQL 期望表单属性中的参数,cql.args.N.type
其中cql.args.N.value
N 是与要插入的值的位置相对应的正整数。但是 ConvertJSONToSQL 输出表单sql.args.N.type
和sql.args.N.value
. 这意味着您需要使用 UpdateAttribute 或 ExecuteScript 更改它们。从 NiFi 1.5.0(撰写本文时尚未发布)开始,您将能够通过NIFI-4684cql
指定来自 ConvertJSONToSQL 的属性的前缀,因此您可以将该属性设置为.
如果 ConvertJSONToSQL 生成的内容是有效的 CQL,则您可能不需要 ReplaceText。如果不是,您将需要使用 ReplaceText 将 SQL 语句更改为有效的 CQL。