大数据中spark跟sparksql写入es数据库

作者:小涛

object Legend01 {

private val logger: Logger = LoggerFactory.getLogger(“Legend”)

def main(args: Array[String]): Unit = {

if (args.length != 1) {

println(
“”"
|请输入applist数据的输入路径:
|input:
“”".stripMargin)
sys.exit(1)
}
//用数组接收所有数据的输入路径
val Array(input) = args

val session = SparkSession.builder() //初始化spark对象
.master(“local[*]”)
.config(“spark.testing.memory”, “2147480000”)
.appName(Legend01.getClass.getSimpleName)
.config(“spark.serializer”, “org.apache.spark.serializer.KryoSerializer”)
.config(“es.nodes”, “ip”)
.config(“es.port”, “9200”)
.config(“es.index.auto.create”, “true”)
.getOrCreate()

//读取applist数据并且去重
var Get = session.read.textFile(input).distinct()

//导入隐士转换
import session.implicits._
val jsonj = Get.map({ t =>

val data = null

try {

val nObject = JSON.parseObject(t)

val imei = nObject.getString(“imei”)

val imsi: String = nObject.getString(“imsi”)

val extras = nObject.getJSONObject(“extras”)

val app_list = extras.getJSONArray(“app_list”)

val trim = app_list.toString.trim

val strings = trim.substring(1, trim.length - 1).split(",")

val result = new StringBuilder

val sb = new StringBuilder

for (i <- strings) {

val quchukongge = i.trim

val str = quchukongge.substring(1, quchukongge.length - 1)

sb.append(str + “,”)

}

result.append(imei + “,” + imsi + “,” + sb).toString()

} catch {
case e: Exception => {

//如果数据不规范跟不是合法数据进行抛异常
logger.error("数据为不合法数据请检查不合法数据是否有用 : " + t)

}
data
}
}
)

val dewq = jsonj.filter(b => b != null).cache()

val mj = dewq.rdd.filter(b => b != null).cache()
val dewr = mj.filter(x => {

// x.contains(“com.aifeng.woshichuanqi.yingyongbao”) || x.contains(“com.tencent.cqsj”) || x.contains(“com.tencent.tmgp.rxcq”) || x.contains(“com.tencent.tmgp.shenghewzcq”) || x.contains(“com.tencent.tmgp.xymobile”) || x.contains(“com.tmcq.anzhi”)

x.contains(“金融”) || x.contains(“贷款”) || x.contains(“信用卡”) || x.contains(“com.hejgjs.shiyuantouzi”) || x.contains(“net.metaquotes.metatrader4”) || x.contains(“disk.micro.com.microdisk”) || x.contains(“com.pme91.guoxin.app.android”) || x.contains(“com.gwtsz.gts2.bj”) || x.contains(“com.pme91.app.android”) || x.contains(“io.dcloud.com.FKqihuo.app”) || x.contains(“com.qhdhcd.cn”) || x.contains(“com.gwtsz.gts2mj1.hx”) || x.contains(“com.baidao.ytxmobile”) || x.contains(“com.jin91.baiyintong”) || x.contains(“com.wattforex”)

})
val Arrt: RDD[(String, String)] = dewr.map(x => {

val de: Array[String] = x.split(",")

val da: String = de(0)

val da01: String = de(1)

(da, da01)
}
)

case class Ao(

imei:String,

imsi:String

)

Arrt.map(
x =>
Ao(
x._1,
x._2
)
)

.saveToEs(“sparktes/test02”)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值