使用SparkSql 读取ES数据

简介: 对于大批量数据,查询es时,需要带条件去查询,否则一下查出所有数据数据量会很大 es查询需要编写json格式的DSL查询语句,对于复杂查询,DSL编写起来也分很复杂,所以我们这里使用sparksql,通过编写sql语句,spark将sql语句自动转化为DSL语句来查询es。
  1. 对于大批量数据,查询es时,需要带条件去查询,否则一下查出所有数据数据量会很大
  2. es查询需要编写json格式的DSL查询语句,对于复杂查询,DSL编写起来也分很复杂,所以我们这里使用sparksql,通过编写sql语句,spark将sql语句自动转化为DSL语句来查询es。
    关于es对spark的支持可参见文档,官网 https://www.elastic.co/guide/en/elasticsearch/hadoop/current/spark.html

废话不多说,上代码
case class people(phone:String)
val sparkConf = new SparkConf().setAppName("application-name").setMaster("local[4]")
val sc = new SparkContext(sparkConf)
val sql = new SQLContext(sc)
import sql.implicits._
//配置
val options = Map(

    "pushdown" -> "true",
    "es.nodes" -> "192.45.15.15", //ip
    "es.port" -> "9200") //端口

val esDF = sql.read.format("org.elasticsearch.spark.sql")

      .options(options)
      .load("spark_202003/alldata")  //索引
    // esDF.printSchema() //可打印schema信息

val table = esDF.createOrReplaceTempView("spark_202003") //创建临时表用于查询

val sqlString=“select * from spark_202003 where code=‘1’ ”

val resultDF = sql.sql(sqlString)
var resultDS = resultDF.map(x => people(x(0).toString))) //
这里是转换成了dataset,之后可对dataset 做其他操作
打印下查询的内容
resultDS.collect().toList.toString()

相关文章
|
9月前
【spark2.x】如何通过SparkSQL读取csv文件
【spark2.x】如何通过SparkSQL读取csv文件
258 0
|
SQL JSON 分布式计算
Spark 操作 kudu--dataFrame , sparkSQL 操作 | 学习笔记
快速学习 Spark 操作 kudu--dataFrame , sparkSQL 操作
372 0
Spark 操作 kudu--dataFrame , sparkSQL 操作 | 学习笔记
|
消息中间件 JSON 分布式计算
Spark Core读取ES的分区问题分析
写这篇文章的原因是前两天星球球友去面试,面试管问了一下,Spark 分析ES的数据,生成的RDD分区数跟什么有关系呢? 稍微猜测一下就能想到跟分片数有关,但是具体是什么关系呢? 可想的具体关系可能是以下两种: 1).就像KafkaRDD的分区与kafka topic分区数的关系一样,一对一。 2).ES支持游标查询,那么是不是也可以对比较大ES 索引的分片进行拆分成多个RDD分区呢? 那么下面浪尖带着大家翻一下源码看看具体情况。
268 0
|
9月前
|
SQL 分布式计算 JavaScript
利用SparkSQL读写Excel数据
利用SparkSQL读写Excel数据
252 0
|
JSON 分布式计算 Java
SparkSQL 读写_Reader | 学习笔记
快速学习 SparkSQL 读写_Reader
191 0
SparkSQL 读写_Reader | 学习笔记
新建parcel写入数据后,读取数据为null
最后一定要加上setDataPosition(0),将偏移指回最开始,这样才能正确读取数据,否则会从当前偏移读取,因为已经是最后了,所以读取的都是null
193 0
|
存储 SQL JSON
PySpark读取数据与保存
PySpark读取数据与保存
562 0
|
SQL JSON 分布式计算
SparkSQL 读写_介绍 | 学习笔记
快速学习 SparkSQL 读写_介绍
112 0
|
数据采集 分布式计算 大数据
SparkSQL 读写_Parquet | 学习笔记
快速学习 SparkSQL 读写_Parquet
235 0
SparkSQL 读写_Parquet | 学习笔记
|
SQL JSON 分布式计算
SparkSQL 读写_Writer | 学习笔记
快速学习 SparkSQL 读写_Writer
139 0
SparkSQL 读写_Writer | 学习笔记

热门文章

最新文章