我只是使用querycassandra处理器查询cassandra表但我不理解的是如何将我的Json输出文件作为输入文件传递给ExecutePyspark处理器,稍后我需要将我的Spark输出数据传递给Hive。请帮帮我,谢谢。
我的查询Cassandra属性:
答案 0 :(得分:5)
考虑使用以下4个处理器的流程:
QueryCassandra - > UpdateAttribute - > PutFile - > ExecutePySpark
第1步:QueryCassandra
处理器:在Cassandra上执行CQL并将结果输出到流文件中。
第2步:UpdateAttribute
处理器:为磁盘上包含查询结果的临时文件的名称赋值filename
。使用NiFi expression language生成文件名,以便每次运行时都不同。创建一个属性result_directory
,并为磁盘上的文件夹分配一个NiFi具有写入权限的文件夹。
filename
值:cassandra_result_${now():toNumber()}
属性:result_directory
/tmp
第3步:PutFile
处理器:配置Directory
属性,并在步骤2中填充值${result_directory}
。
第4步:ExecutePySpark
处理器:通过PySpark App Args
处理器属性将文件名及其位置作为参数传递给PySpark应用程序。然后,应用程序可以使用代码从磁盘上的文件中读取数据,处理它并写入Hive。
PySpark App Args
${result_directory}/${filename}
此外,您可以在步骤2(UpdateAttribute)中配置更多属性,然后可以将其作为参数传递到步骤4(ExecutePySpark)并由PySpark应用程序以书面形式考虑到Hive(例如,Hive数据库和表名)