Spark读取ElasticSearch数据库三种配置方式及其注意事项

******重点中的重点,这是首先要注意的问题:

就是导入的org.elasticsearch.elasticsearch-spark-20_2.11  Jar包的版本一定要和要读取的ES数据库的版本保持一致,

如果比数据库版本低,会直接报错,如果高于数据库的版本,数据的解析会出现问题。

首先配置SparkConf

1         SparkConf conf = new SparkConf()
2                 .setAppName("ElasticSearch-spark")
3                 .setMaster("local[1]")
4                 .set("es.es.index.auto.create", "true")
5 
6                 .set("es.nodes","127.0.0.1")
7                 .set("es.port","9200")
8                 .set("es.nodes.wan.only", "true");

 

第一种读取方式:

1         SparkSession sparkSession = SparkSession.builder().config(conf).getOrCreate();
2         JavaSparkContext jsc = new JavaSparkContext(sparkSession.sparkContext());//adapter
3         JavaRDD<Map<String, Object>> searchRdd = esRDD(jsc, "index" ).values();
4         for (Map<String, Object> item : searchRdd.collect()) {
5             item.forEach((key, value)->{
6                 System.out.println("search key:" + key + ", search value:" + value);
7             });
8         }

 

第二种读取方式:

1         JavaSparkContext sc = new JavaSparkContext(conf);
2         JavaPairRDD<String, Map<String, Object>> esRDD = JavaEsSpark.esRDD(sc, "index");
3         System.out.println(esRDD.count());
4         System.out.println(esRDD.collect().toString());
5         for(Tuple2 tuple:esRDD.collect()){
6             System.out.print(tuple._1()+"----------");
7             System.out.println(tuple._2());
8         }

第三种读取方式:

1         SparkSession spark = SparkSession.builder().config(conf).getOrCreate();
2         Dataset<Row> a  = spark
3                 .read()
4                 .format("es")
5                 .load("index")
6                 ;
7         System.out.println(a.schema());
8         a.show();

以上三种方式都可以返回ES中的数据,可针对需求自行选择。

记于2019年5月22日20点41分

转载于:https://www.cnblogs.com/langeraa/p/10908418.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值