【发布时间】:2018-09-19 21:38:24
【问题描述】:
哪台机器执行org.apache.hadoop.hbase.filter.Filter?
根据documentation,当使用 Get 或 Scan 操作从 HBase 读取数据时,您可以使用自定义过滤器将结果子集返回给客户端。虽然这不会减少服务器端 IO,但它确实会减少网络带宽并减少客户端需要处理的数据量。
据我所知,spark executor 机器正在 hbase 客户端的后台线程中进行远程调用以查询 HBase 数据。并且这些调用很少针对本地机器的 hbase 区域服务器。
所以我在考虑我的自定义过滤器是在 Spark 执行器机器上执行、具有巨大的网络开销、与文档所保证的内容相矛盾,还是以某种方式通过网络传输并在 HBase 机器上执行?
我喜欢过滤器是不可序列化的。那么下一个问题是这里是否可以优化任何东西?
【问题讨论】:
-
org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(org.apache.hadoop.hbase.HBaseConfiguration.create())(简化版)
-
我以为 HBaseConfiguration.create() 使用集群配置和集群设置
-
好的,那么你使用this之类的东西吗?
-
因此,如果您询问
filter应用于结果rdd(示例中为hBaseRDD),所有逻辑都由Spark 执行(首先获取数据)。但是基于DataFrame的连接器可能会下推过滤器。
标签: java apache-spark hbase