Hive数据写入ES,处理经纬度范围查询

使用ES的初衷就是快速检索,他的默认输出数据是一万条,并不适合大数据的处理计算。要是需要导出或者将取出的数据再做二次处理的话,就需要换组件。

首先需要将hive中的数据写入ES,要是涉及到经纬度,需要lat,lng的格式放到location字段里面。

import org.apache.spark.rdd.RDD
import org.apache.spark.sql.{Row, SparkSession}
import org.elasticsearch.spark.rdd.EsSpark

/**
  * Created by yinyi on 2019/9/3.
  */

object BigWide_V2{
  def main(args: Array[String]) {
  val spark = SparkSession
  .builder()
  .appName("TestES")
  .config("spark.sql.warehouse.dir", Utils.HIVEWAREHOUSELOCATION)
  .config("es.nodes", "10.0.4.67 ,0.0.4.235,0.0.4.161,0.0.4.90 ,0.0.4.111") //es的节点,多个用逗号分隔
  .config("es.index.auto.create", "true") //开启自动创建索引
  .config("index.refresh_interval", "-1") //设置为-1以禁用刷新
  .config("es.nodes",Utils.HOST_ES) //es的节点,多个用逗号分隔
  //      .config("es.write.operation","upsert")//表示如果id重复就更新数据;
  .config("es.mapping.date.rich","false")
  .config("spark.sql.shuffle.partitions","6000")
  .enableHiveSupport()
  .getOrCreate()

  

    val los = spark.sql("select name,mobile ,province,city,county,concat_ws(',',nvl(lat,'0.0'),nvl(lng,'0.0')) as location,child_english_label," +
      " chusan_gaosan_label,vippl_label,xinyongka_label,cos_med_label,age_label,sex_label,edu_label," +
      " marry_status_label,income_level_label,consume_level_label,month_consume_pinci_label " +
      " from  precisionmarketing.result_190905_sugang_jingqing_big_wide_label "+
      " where mobile                   rlike '^1[3456789]\\\\d{9}$'   " +
      " and lng >-180    and lng<180 and lat>-90 and lat<90         " +
      "").rdd


    //lter
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

꧁꫞ND꫞꧂

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值