Filter 火花流动态滤波

Filter 火花流动态滤波,filter,apache-spark,streaming,dynamically-generated,Filter,Apache Spark,Streaming,Dynamically Generated,我有一份工作。我想对我的输入RDD应用过滤器 我希望在每个spark流式处理批处理期间,每次都从Hbase动态获取筛选条件 我如何做到这一点 我可以使用映射分区创建一次连接对象 但是使用in-spark filter如何实现相同的功能?我认为,正确的方法是编写自己的过滤函数(伪代码): DStream intDstream=someintegerintostream; intDstream.foreachPartition{ 如果批处理需要HBase连接,请在此处创建HBase连接 而(arg0

我有一份工作。我想对我的输入RDD应用过滤器

我希望在每个spark流式处理批处理期间,每次都从Hbase动态获取筛选条件

我如何做到这一点

我可以使用映射分区创建一次连接对象


但是使用in-spark filter如何实现相同的功能?

我认为,正确的方法是编写自己的过滤函数(伪代码):

DStream intDstream=someintegerintostream;
intDstream.foreachPartition{
如果批处理需要HBase连接,请在此处创建HBase连接
而(arg0.hasNext()){//这里有一个迭代器
当前整数=arg0.next();
如果每个元素都需要HBase连接,请在此处创建它
//以下是您的筛选函数:
如果(当前符合您的条件)
arg0.remove();

因此,所发生的情况是,您在执行器上运行,手动拾取每个元素,对其应用一个条件,如果它符合您的条件,则将其删除。

根据您的筛选条件,您可能可以通过加入
来实现它。您必须给出一个更完整的示例,说明您正在尝试执行的操作,但如果连接的一侧是您的Spark流,右侧是一组条件。如果没有任何条件适用,则连接不会产生任何行—它会过滤这些行。
DStream<Integer> intDstream= someIntegerIntoDStream;
intDstream.foreachPartition{
     create HBase connection here if you need it for a batch
     while(arg0.hasNext()){ //here you have an iterator
          Integer current = arg0.next();
          create HBase connection here if you need it for each element
          //Here is your filter function:
          if( current meets your condition )
               arg0.remove();