问题标签 [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.
hadoop - 什么是 ElasticSearch-Hadoop (es-hadoop) 以及它在实时 Web 应用程序中相对于 HBase 的优势?
从描述中我并不完全清楚 es-hadoop 是什么。
这仅仅是将数据从 ES 集群转移到 HDFS 以进行 Hadoop 分析的“连接器”吗?如果是这样,为什么不直接使用 HBase 进行低延迟文本查询呢?
es-Hadoop 与常规 ES 的安装方式不同吗?
请澄清一下。
谢谢。
scala - elasticsearch-spark 索引错误:无法使用 ScalaValueWriter 处理 Map 中的类型 Map
我正在尝试使用带有 spark-1.3.1 的 elasticsearch-spark-2.1.0 对 elasticsearch 中的数据进行索引,但出现以下错误:
这是我索引火花 RDD 的代码。
为什么我不能在地图中索引地图,我该如何解决?谢谢。
scala - elasticsearch-spark 连接器大小限制参数在查询中被忽略
我正在尝试elasticsearch
使用elasticsearch-spark
连接器进行查询,我只想返回几个结果:
例如:
但是,这将返回索引中的所有文档。
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 的时候插入到表中。
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 检索文本的未分析原始存储版本。我还没有弄清楚如何以有效的方式查询分析的文本/标记。到目前为止,我已经想出了两种可能的方法:
- 将 elasticsearch-py 提供的 es.termvector() 函数映射到 RDD 的每条记录上,以检索分析的令牌。
- 将elasticsearch-py提供的es.indices.analyze()函数映射到RDD的每条记录上,对每条记录进行分析。
请参阅相关:Elasticsearch analyze() not compatible with Spark in Python?
据我了解,这两种方法对于大型数据集来说效率都非常低,因为它们涉及到对 RDD 中的每条记录的 ES 的 REST 调用。
因此,我的问题是
- 是否有另一种有效的方法可以从 ES 中提取分析的文本/标记,而无需为每条记录进行 REST 调用?也许是 ES 设置将分析的文本与原始文本一起存储在字段中?或者能够在查询本身中请求分析的令牌/文本,以便我可以将其包含在 elasticsearch-hadoop 配置中。
- 对于我的问题,是否有替代或更好的解决方案可以利用 Spark 的并行机器学习功能和类似 ES 的查询/存储/分析功能?
elasticsearch - Spark-Cassandra 与 Spark-Elasticsearch
我使用 Elasticsearch 已经有一段时间了,使用 Cassandra 的经验很少。
现在,我有一个项目,我们想使用 spark 处理数据,但我需要决定是否应该使用 Cassandra 或 Elasticsearch 作为数据存储来加载我的数据。
在连接器方面,Cassandra 和 Elasticsearch 现在都有一个很好的连接器来加载数据,因此这不会成为决定因素。
决定胜负的因素是我在 Spark 中加载数据的速度。我的数据将近 20 TB。
我知道我可以使用 JMeter 运行一些测试并自己查看结果,但我想问问熟悉这两个系统的人。
谢谢
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开发版本。
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 上执行语句有两种方式。
Spark SQL 与 Scala
/li>Thrift 服务器(在 spark 上执行的代码)
/li>
我有以下问题,由于它们是连接的,我决定将它们打包成一个问题:
似乎使用 Spark SQL 的方法支持 WHERE 后面的下推(是否指定了 es.query),执行时间相同并且可以接受。但是解决方案 1 绝对不支持聚合函数的 pushdow,即呈现的 count(*) 不在 ES 一侧执行,而是在检索到所有数据之后 - ES 返回行并且 Spark SQL 对它们进行计数。请确认这是否是正确的行为
第一个解决方案的行为很奇怪,无论下推是真还是假,时间都是相等的
解决方案 2 似乎不支持下推,我尝试以什么方式指定子查询并不重要,无论是表定义的一部分还是语句的 WHERE 子句,似乎只是获取所有巨大的索引然后对其进行数学计算。是不是 Thrift-hive 不能对 ES 进行下推
我想在弹性搜索中跟踪查询,我确实设置了以下内容:
/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 一侧跟踪扫描和滚动?
json - 如何使用hadoop map-reduce和es-hadoop将json索引到elasticsearch?
我有大量存储在 HDFS 中的数据,我们希望将其编入索引Elasticsearch
。琐碎的想法是使用Elasticsearch-hadoop
库。
我遵循了这个视频中的概念,这是我为这项工作编写的代码。
这项工作运行良好,但整个 json 被放入一个名为test
in 的字段中Elasticsearch
。很明显,字段名称是这一行的关键,private final Text key = new Text("test");
但我需要整个 json 字段。
这是文档在 Elasticsearch 中的显示方式。
一种选择是手动解析 json 并为 json 中的每个键分配字段。
还有其他选择吗?
java - 使用 elasticsearch-hadoop map-reduce 将 json 从 HDFS 写入 Elasticsearch
我们有一些 json 数据存储到 HDFS 中,我们正在尝试使用 elasticsearch-hadoop map reduce 将数据摄取到 Elasticsearch 中。
我们使用的代码很简单(下)
这段代码运行良好,但我们有两个问题。
第一个问题是es.resource.write
财产的价值。目前它由index_name
json 的属性提供。
如果 json 包含数组类型的属性,例如
例如,我们如何配置es.resource.write
以采用第一个tag
值?
我们尝试使用{tags.tag}
,{tags[0].tag}
但要么没有工作。
另一个问题,如何在 tags 属性的两个值中使作业索引 json 文档?