hadoop - 如何基于弹性hadoop加入RDD

标签 hadoop apache-spark elasticsearch hdfs bigdata

我正在寻找处理来自大索引的并行数据的方法,
我考虑过快照索引(到hdfs),然后提交spark作业来处理记录。

解决它的另一种方法是使用elastic with spark

我的问题:

  • 快照API输出可以是文本文件而不是二进制文件吗?
  • 如何使用 Spark flex 算法并对特定文档执行子查询? (可以说我有狗的索引,然后我想找到每只狗的骨头)?

  • ------编辑------

    我的索引有些变化,有Dogs索引,即dogs-relations索引。
    狗指数:
    ...
    {
      name: "rex",
      id: 1,
      ...
    },
    {
      name: "bobby",
      id : 2,
      ...
    }
    ...
    

    狗狗关系指数:
    ...
    {
       first_dog_id: 1,
       second_dog_id: 2,
       relation_type: "enemies",
       ...
    }
    ...
    

    该关系是多对多的,因此每条狗在狗关系索引中可以有许多文档。我想创建2个RDD(狗和关系),并以某种方式将它们加入内存,而不广播数据(大索引)

    最佳答案

    点1.

    我不这么认为,AFAIK最接近的选择是使用扫描/滚动API(取决于您所使用的ES版本):ES v5.1 scroll api
    您可以通过这种方式将索引“导出”到文本文件。

    点2。

    做代码的最简单方法(按代码进行)(每个狗文档的elasticsearch查询)是使用elastic-hadoop加载dogsRDD,然后对于子查询行为,执行以下操作:

    dogsRDD.mapPartitions { dogsPart =>
        // this code is executed by the workers
        dogsPart.map { dog =>
            // do the dog specific ES queries here
        }
    }
    

    但是,您将无法使用elastic-hadoop来完成特定于狗的工作,而必须使用scala ES连接器或HTTP,以及ES扫描/滚动API。

    您可能可以通过更详细地了解用例来改善此情况,也许可以将工作分解为多个可管理的步骤idk。

    这可能对您生命周期的后期没有帮助,但是我想以最有 build 性的方式提出一些意见:
  • 我不太清楚所有细节,但是,您以关系术语推理文档,这表明现有数据模型将引起更多的麻烦。 ES不执行联接。
  • 考虑通过在写时执行一些聚合来简化查询时的生活
  • 字里行间,听起来你有一个大索引吗?如果合适,最好将索引拆分为较小的索引。我已经成功地使用了基于时间的索引。即每天或每月的索引,具体取决于数据量。
  • 同样,可能不是很有帮助,但是当您处理的数据适合群集的内存,或者可以合理地将工作分解为基于时间的“碎片”时,Spark的效果最佳。或者通过将每个步骤的输出写入磁盘以释放内存来分解工作。我知道这完全取决于用例!
  • ElasticSearch主要用例是查询,以我的经验,它不适用于批处理/批量处理用例。

  • 只是以为我会分享我的一些发现,以防它在某种程度上有用。 :)

    关于hadoop - 如何基于弹性hadoop加入RDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41552208/

    相关文章:

    java - 每个下级节点上的Reducer执行

    python - 为什么 Pandas UDF 没有被并行化?

    elasticsearch - 父子关系的Elasticsearch路由问题-对象存储在不同的分片中

    java - 如何使用java Client使用ElasticSearch进行查询而不用担心客户端java堆内存

    elasticsearch - 如何存储所有属性的原始值?

    java - Hadoop : set a variable like hashSet only once so that it can be utilized multiple times in each map task

    hadoop - 如何Hadoop Map Reduce整个文件

    hadoop - 运行Hadoop 2.7.1时的文件权限问题

    apache-spark - PySpark:withColumn() 有两个条件和三个结果

    performance - 如果在列表中的任意一组点之间,则过滤 Spark DataFrame