spark2.x写入数据到ElasticSearch5.X集群
来源:互联网 发布:网络通讯测试软件 编辑:程序博客网 时间:2024/06/06 03:58
首先说明,到目前为止,我使用过spark1.6写入数据到ES2.4中,使用很简单。
当我使用spark1.6写入到ES5.5的时候,一直不成功。
官网首先就讲了
through the dedicated support available since 2.1 or through the Map/Reduce bridge since 2.0. Spark 2.0 is supported in elasticsearch-hadoop since version 5.0.
在本地测试,发现使用spark2.x可以,就改scala版本为 2.11.8,将maven依赖换成spark2.1.0版本的,反正在本地测试,修改的东西并不多。
修改maven依赖,一定要注意版本的准确。
<!--<dependency>-->
<!--<groupId>org.elasticsearch</groupId>-->
<!--<artifactId>elasticsearch-spark-20_2.11</artifactId>-->
<!--<version>5.5.0</version>-->
<!--</dependency>-->
第一点改变的就是,这里的用法并不像之前的,使用rdd.saveToEs(。。。)就可以写入elasticsearch,在spark2.x中,会报错没有这个方法。
官方文档在这里: https://www.elastic.co/guide/en/elasticsearch/hadoop/master/spark.html
官方文档中有这个例子,并给出了步骤,这样操作可以成功写入,并且写入的两列,就是 departure, arrival
像上图这种,那么自定义的rdd,如何将内容写入ES,如下:
package com.bigsun
import org.apache.spark.sql.SparkSession
import org.elasticsearch.spark
import org.elasticsearch.spark.rdd.EsSpark
object App{
case class Trip(content: String)
def main(args: Array[String]): Unit = {
println( "Hello World!" )
System.setProperty("hadoop.home.dir", "G:\\hadoop_home")
val spark = SparkSession.builder()
.appName("SparkTest")
.master("local[5]")
.config("es.index.auto.create", "true")
.config("pushdown", "true")
.config("es.nodes", "192.168.2.5")
.config("es.port", "9200")
.config("es.nodes.wan.only", "true")
.getOrCreate()
//从ES中读取数据
val sparkDF = spark.sqlContext.read.format("org.elasticsearch.spark.sql").load("index/external")
sparkDF.take(10).foreach(println(_))
import spark.implicits._
val data = spark.read.textFile("g:\\mydata\\*")
//写入到ES,一定要按照这个格式,因为这种格式才带有元数据信息,content就是ES中的列名
val rdd = data.rdd.map{
x => Trip(x)
}
EsSpark.saveToEs(rdd, "index/external")
spark.stop()
}
}
一定要将rdd转换成case class中的格式,按照我的理解,这里就是指定在ES中的列名。 最后将完整的春江花月夜写入到ES中。
spark1.x是否可以这样写入,还待测试。如果想知道答案,请联系我。
最后,网上关于es5.x 和 spark2.x资料真的不是很多。 碰到问题,首先查官网!这是这次的教训。
图显示不出来?就是ES的截图而已。
阅读全文
0 0
- spark2.x写入数据到ElasticSearch5.X集群
- Spark2.x集群安装
- Spark2.x写入Elasticsearch的性能测试
- ElasticSearch5.x集群安装及测试
- elasticSearch5.x单实例和集群安装
- ElasticSearch5.x 集群部署 及启动出现的问题解决
- elasticsearch5.x集群搭建,ik分词器,head插件
- [spark]-Spark2.x集群搭建与参数详解
- cocos2dx 2.x 将数据写入到txt文件
- elasticsearch5.x服务器搭建
- SpringBoot + Elasticsearch5.x
- Elasticsearch5.X配置说明
- Elasticsearch5.X索引
- Elasticsearch5.X聚合简介
- Spark2.x技术内幕
- elasticsearch5.x下载与启动
- elasticsearch5.x之Slice scroll
- Elasticsearch5.X head插件安装
- 2017年7月31日---阶段性工作总结(含大量数据的树的回显)
- AngularJS实时监听Html控件状态(值)变化
- 归并排序(java实现)
- JavaScript 页面跳转并传值,解析url成对象
- GraphicsLayer 与 FeatureLayer
- spark2.x写入数据到ElasticSearch5.X集群
- SpringMvc 你该知道如何在HandlerExceptionResolver中获取Model
- leetcode#112. Path Sum
- adb 拷贝文件没有权限
- very Good
- C++排序算法之基数排序
- undefined 和 null
- 简单理解Socket
- iOS编程基础-Swift(五)-流程控制与其他(序)