如何使用QueryCassandra和ExecutePySpark Nifi处理器将我的cassandra数据传输到pyspark?

时间:2018-03-14 12:21:26

标签: apache-spark cassandra pyspark apache-nifi kylo

我只是使用querycassandra处理器查询cassandra表但我不理解的是如何将我的Json输出文件作为输入文件传递给ExecutePyspark处理器,稍后我需要将我的Spark输出数据传递给Hive。请帮帮我,谢谢。

我的查询Cassandra属性:

enter image description here

Pyspark物业: enter image description here

1 个答案:

答案 0 :(得分:5)

考虑使用以下4个处理器的流程:

QueryCassandra - > UpdateAttribute - > PutFile - > ExecutePySpark

第1步QueryCassandra处理器:在Cassandra上执行CQL并将结果输出到流文件中。

第2步UpdateAttribute处理器:为磁盘上包含查询结果的临时文件的名称赋值filename。使用NiFi expression language生成文件名,以便每次运行时都不同。创建一个属性result_directory,并为磁盘上的文件夹分配一个NiFi具有写入权限的文件夹。

  • property:filename
  • 值:cassandra_result_${now():toNumber()}

  • 属性:result_directory

  • 值:/tmp

enter image description here

第3步PutFile处理器:配置Directory属性,并在步骤2中填充值${result_directory}

enter image description here

第4步ExecutePySpark处理器:通过PySpark App Args处理器属性将文件名及其位置作为参数传递给PySpark应用程序。然后,应用程序可以使用代码从磁盘上的文件中读取数据,处理它并写入Hive。

  • property:PySpark App Args
  • 值:${result_directory}/${filename}

{{0}}

此外,您可以在步骤2(UpdateAttribute)中配置更多属性,然后可以将其作为参数传递到步骤4(ExecutePySpark)并由PySpark应用程序以书面形式考虑到Hive(例如,Hive数据库和表名)