我想检索插入到Elasticsearch中的最后50条记录,以找出异常检测项目的平均值。我就是这样从ES中检索数据的。然而,它正在获取整个数据,而不是最后的50条记录。有什么办法吗?
edf = spark \
.read \
.format("org.elasticsearch.spark.sql") \
.option("es.read.metadata", "false") \
.option("es.nodes.wan.only","true") \
.option("es.port","9200")\
.option("es.net.ssl","false")\
.option("es.nodes", "http://localhost") \
.load("anomaly_detection/data")
# GroupBy based on the `sender` column
df3 = edf.groupBy("sender") \
.agg(expr("avg(amount)").alias("avg_amount"))在这里,sender列正在获取整个行数据,如何只获取最后50个DataFrame行数据?
输入数据模式格式:
|sender|receiver|amount|发布于 2019-07-22 06:40:55
您还可以在读取数据时将查询添加为
query='{"query": {"match_all": {}}, "size": 50, "sort": [{"_timestamp": {"order": "desc"}}]}'把它当作
edf = spark \
.read \
.format("org.elasticsearch.spark.sql") \
.option("es.read.metadata", "false") \
.option("es.nodes.wan.only","true") \
.option("es.port","9200")\
.option("es.net.ssl","false")\
.option("es.nodes", "http://localhost") \
.option("query", query)
.load("anomaly_detection/data")https://stackoverflow.com/questions/57140273
复制相似问题