问题标签 [elasticsearch-hadoop]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
4961 浏览

hadoop - 什么是 ElasticSearch-Hadoop (es-hadoop) 以及它在实时 Web 应用程序中相对于 HBase 的优势?

从描述中我并不完全清楚 es-hadoop 是什么。

这仅仅是将数据从 ES 集群转移到 HDFS 以进行 Hadoop 分析的“连接器”吗?如果是这样,为什么不直接使用 HBase 进行低延迟文本查询呢?

es-Hadoop 与常规 ES 的安装方式不同吗?

请澄清一下。

谢谢。

0 投票
1 回答
367 浏览

scala - elasticsearch-spark 索引错误:无法使用 ScalaValueWriter 处理 Map 中的类型 Map

我正在尝试使用带有 spark-1.3.1 的 elasticsearch-spark-2.1.0 对 elasticsearch 中的数据进行索引,但出现以下错误:

这是我索引火花 RDD 的代码。

为什么我不能在地图中索引地图,我该如何解决?谢谢。

0 投票
3 回答
1355 浏览

scala - elasticsearch-spark 连接器大小限制参数在查询中被忽略

我正在尝试elasticsearch使用elasticsearch-spark连接器进行查询,我只想返回几个结果:

例如:

但是,这将返回索引中的所有文档。

0 投票
1 回答
224 浏览

hadoop - 从 Hive 到 Elasticsearch 的自动插入

我目前正在尝试找到一种方法来自动将 Hadoop 文本文件中的数据添加到 elasticsearch 中。我们正在运行 HIVE v0.11、Hadoop v2.0.5、Elasticsearch 1.7.1 和 elasticsearch-hadoop v2.1.0 这些文件存储在路径 /tmp/test-log/apache2log 下的不同子文件夹中,命名为 year/month/day 这个表创建工作是从 Hadoop 获取数据:

但是当我尝试创建一个将这些数据插入到弹性搜索中的表时,创建工作正常,但表是空的。我尝试了以下命令:

从默认设置更改的变量:

我知道,有可能为弹性搜索创建第二个表并使用 INSERT 添加数据。但是我需要这个过程是自动化的,所以添加到文件中的数据应该在它到达 hadoop 的时候插入到表中。

0 投票
1 回答
1817 浏览

elasticsearch - Spark 机器学习和 Elasticsearch 在 Python 中分析了标记/文本

我正在尝试构建一个应用程序来索引 Elasticsearch 中的一堆文档,并通过布尔查询将文档检索到 Spark 中以进行机器学习。我正在尝试通过 Python 通过 pySpark 和 elasticsearch-py 来完成这一切。

对于机器学习部分,我需要使用每个文本文档中的标记来创建特征。为此,我需要处理/分析每个文档的典型内容,例如小写、词干、删除停用词等。

所以基本上我需要"Quickly the brown fox is getting away."变成类似"quick brown fox get away"or的东西["quick", "brown", "fox", "get", "away"]。我知道您可以通过各种 Python 包和函数轻松地做到这一点,但我想使用 Elasticsearch 分析器来做到这一点。此外,我需要以对大数据集有效的方式进行操作。

基本上,我想直接从 Elasticsearch 中提取文本的分析版本或分析的标记,并在 Spark 框架中以有效的方式进行。作为相对的 ES 新手,我想出了如何通过调整 elasticsearch-hadoop 插件直接从 Spark 查询文档:

http://blog.qbox.io/elasticsearch-in-apache-spark-python

基本上是这样的:

此代码将或多或少地从 ES 检索文本的未分析原始存储版本。我还没有弄清楚如何以有效的方式查询分析的文本/标记。到目前为止,我已经想出了两种可能的方法:

  1. 将 elasticsearch-py 提供的 es.termvector() 函数映射到 RDD 的每条记录上,以检索分析的令牌。
  2. 将elasticsearch-py提供的es.indices.analyze()函数映射到RDD的每条记录上,对每条记录进行分析。

请参阅相关:Elasticsearch analyze() not compatible with Spark in Python?

据我了解,这两种方法对于大型数据集来说效率都非常低,因为它们涉及到对 RDD 中的每条记录的 ES 的 REST 调用。

因此,我的问题是

  1. 是否有另一种有效的方法可以从 ES 中提取分析的文本/标记,而无需为每条记录进行 REST 调用?也许是 ES 设置将分析的文本与原始文本一起存储在字段中?或者能够在查询本身中请求分析的令牌/文本,以便我可以将其包含在 elasticsearch-hadoop 配置中。
  2. 对于我的问题,是否有替代或更好的解决方案可以利用 Spark 的并行机器学习功能和类似 ES 的查询/存储/分析功能?
0 投票
2 回答
1631 浏览

elasticsearch - Spark-Cassandra 与 Spark-Elasticsearch

我使用 Elasticsearch 已经有一段时间了,使用 Cassandra 的经验很少。

现在,我有一个项目,我们想使用 spark 处理数据,但我需要决定是否应该使用 Cassandra 或 Elasticsearch 作为数据存储来加载我的数据。

在连接器方面,Cassandra 和 Elasticsearch 现在都有一个很好的连接器来加载数据,因此这不会成为决定因素。

决定胜负的因素是我在 Spark 中加载数据的速度。我的数据将近 20 TB。

我知道我可以使用 JMeter 运行一些测试并自己查看结果,但我想问问熟悉这两个系统的人。

谢谢

0 投票
1 回答
9283 浏览

elasticsearch - 将 Spark Dataframe 保存到 Elasticsearch - 无法处理类型异常

我设计了一个简单的工作来从 MySQL 读取数据并将其保存在 Spark 的 Elasticsearch 中。

这是代码:

可以看到代码非常简单。它将数据读入 DataFrame,选择一些列,然后count在 Dataframe 上执行 a 作为基本操作。到目前为止一切正常。

然后它尝试将数据保存到 Elasticsearch 中,但它失败了,因为它无法处理某些类型。您可以在此处查看错误日志。

我不确定为什么它不能处理那种类型。有谁知道为什么会这样?

我正在使用 Apache Spark 1.5.0、Elasticsearch 1.4.4 和 elaticsearch-hadoop 2.1.1

编辑:

  • 我已经使用示例数据集以及源代码更新了要点链接。
  • 我还尝试使用@costin 在邮件列表中提到的 elasticsearch -hadoop开发版本。
0 投票
2 回答
1377 浏览

elasticsearch - Elasticsearch-hadoop & Elasticsearch-spark sql - 语句跟踪扫描&滚动

我们正在尝试将 ES(1.7.2,4 节点集群)与 Spark(1.5.1,使用 hive 编译,hadoop 与 scala 2.11,4 节点集群)集成,有 hdfs 进入方程(hadoop 2.7,4 节点)和thrift jdbc 服务器和 elasticsearch-hadoop-2.2.0-m1.jar

因此,在 ES 上执行语句有两种方式。

  1. Spark SQL 与 Scala

    /li>
  2. Thrift 服务器(在 spark 上执行的代码)

    /li>

我有以下问题,由于它们是连接的,我决定将它们打包成一个问题:

  1. 似乎使用 Spark SQL 的方法支持 WHERE 后面的下推(是否指定​​了 es.query),执行时间相同并且可以接受。但是解决方案 1 绝对不支持聚合函数的 pushdow,即呈现的 count(*) 不在 ES 一侧执行,而是在检索到所有数据之后 - ES 返回行并且 Spark SQL 对它们进行计数。请确认这是否是正确的行为

  2. 第一个解决方案的行为很奇怪,无论下推是真还是假,时间都是相等的

  3. 解决方案 2 似乎不支持下推,我尝试以什么方式指定子查询并不重要,无论是表定义的一部分还是语句的 WHERE 子句,似乎只是获取所有巨大的索引然后对其进行数学计算。是不是 Thrift-hive 不能对 ES 进行下推

  4. 我想在弹性搜索中跟踪查询,我确实设置了以下内容:

    /li>

所有 index.search.slowlog.threshold.query、index.search.slowlog.threshold.fetch 甚至 index.indexing.slowlog.threshold.index 都设置为 0ms。而且我确实在慢日志文件中看到了从感觉执行的常见语句(所以它可以工作)。但我没有看到针对 ES 执行的 Spark SQL 或 thrift 语句。我想这些是 scan&scroll 语句,因为如果我从感觉执行 scan&scroll,这些也不会被记录。是否有可能以某种方式在 ES 一侧跟踪扫描和滚动?

0 投票
1 回答
719 浏览

json - 如何使用hadoop map-reduce和es-hadoop将json索引到elasticsearch?

我有大量存储在 HDFS 中的数据,我们希望将其编入索引Elasticsearch。琐碎的想法是使用Elasticsearch-hadoop库。

我遵循了这个视频中的概念,这是我为这项工作编写的代码。

这项工作运行良好,但整个 json 被放入一个名为testin 的字段中Elasticsearch。很明显,字段名称是这一行的关键,private final Text key = new Text("test");但我需要整个 json 字段。

这是文档在 Elasticsearch 中的显示方式。

一种选择是手动解析 json 并为 json 中的每个键分配字段。

还有其他选择吗?

0 投票
1 回答
794 浏览

java - 使用 elasticsearch-hadoop map-reduce 将 json 从 HDFS 写入 Elasticsearch

我们有一些 json 数据存储到 HDFS 中,我们正在尝试使用 elasticsearch-hadoop map reduce 将数据摄取到 Elasticsearch 中。

我们使用的代码很简单(下)

这段代码运行良好,但我们有两个问题。

第一个问题是es.resource.write财产的价值。目前它由index_namejson 的属性提供。

如果 json 包含数组类型的属性,例如

例如,我们如何配置es.resource.write以采用第一个tag值?

我们尝试使用{tags.tag}{tags[0].tag}但要么没有工作。

另一个问题,如何在 tags 属性的两个值中使作业索引 json 文档?