gpt4 book ai didi

apache-spark - 有没有人能够将 elasticsearch xpack sql 与 Spark 一起使用?

转载 作者:行者123 更新时间:2023-11-29 02:57:26 24 4
gpt4 key购买 nike

我正在尝试使用 PySpark 从 elasticsearch 读取数据。通常我会将查询设置为沿线的内容(请参阅下面的查询)并将 es.resource 设置为索引,例如“my_index/doc”,这样我就可以将数据读入 spark:

q ="""{
"query": {
"match_all": {}
}
}"""

但是最近我尝试了 _xpack/sql 与 kibana 和 JDBC 与其他 SQL 客户端,它们在获取数据方面工作得很好。但是,当我尝试在我的 pyspark 代码中引用 _xpack 时,出现以下错误:

Py4JJavaError: An error occurred while calling 
z:org.apache.spark.api.python.PythonRDD.newAPIHadoopRDD.
: org.elasticsearch.hadoop.rest.EsHadoopInvalidRequest:
org.elasticsearch.hadoop.rest.EsHadoopRemoteException:
invalid_index_name_exception: Invalid index name [_xpack], must not start with '_'.
null

有没有人尝试过使用 _xpack 或知道如何从 Elasticsearch hadoop 插件执行 Elasticsearch SQL 查询?

您将在下面找到我试图用于在 pyspark 上执行的代码的摘录,在此先感谢您!

q = """{"query": "select * from eg_flight limit 1"}"""

es_read_conf = {
"es.nodes" : "192.168.1.71,192.168.1.72,192.168.1.73",
"es.port" : "9200",
"es.resource" : "_xpack/sql",
"es.query" : q
}

es_rdd = sc.newAPIHadoopRDD(
inputFormatClass="org.elasticsearch.hadoop.mr.EsInputFormat",
keyClass="org.apache.hadoop.io.NullWritable",
valueClass="org.elasticsearch.hadoop.mr.LinkedMapWritable",
conf=es_read_conf)

最佳答案

我认为此功能不受支持。 PySpark 中的替代解决方案是使用 JDBC 驱动程序,我确实尝试过。我尝试了以下方法:

es_df = spark.read.jdbc(url="jdbc:es://http://192.168.1.71:9200", table = "(select * from eg_flight) mytable")

我得到了以下错误:

Py4JJavaError: An error occurred while calling o2488.jdbc.
: java.sql.SQLFeatureNotSupportedException: Found 1 problem(s)
line 1:8: Unexecutable item

...

另一种方法是使用核心 Python 和请求来完成它,但我不推荐它用于大型数据集。

import requests as r
import json


es_template = {
"query": "select * from eg_flight"
}

es_link = "http://192.168.1.71:9200/_xpack/sql"
headers = {'Content-type': 'application/json'}


if __name__ == "__main__":

load = r.post(es_link, data=json.dumps(es_template), headers=headers)
if load.status_code == 200:
load = load.json()
#do something with it

关于apache-spark - 有没有人能够将 elasticsearch xpack sql 与 Spark 一起使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54451452/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com