spark操作hive简单代码

import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession

/**
  * Created by zengxiaosen on 16/9/23.
  */
object hiveoperation {

  def main(args: Array[String]): Unit = {
    val sparkConf = new SparkConf().setAppName("hive").setMaster("local")
    val ss = SparkSession.builder()
        .enableHiveSupport()
        .config(sparkConf)
        .getOrCreate()
    import ss.implicits._

    val date = "2015-08-28" //通常通过参数传过来

    /*
    在hive表中
    desc track_log
    出现:
    id string
    url string
    referer string
    keyword string
    type string
    guid string
    pageid string
    moduleid string
    linkid string
    attachedinfo string
    sessionid string
    trackeru string
    cookie string
    ordercode string
    tracktime string
    enduserid string
    firstlink string
    sessionviewno string
    productid string
    curmerchantid string
    provinceid string
    cityid string
    ds string
    hour string

    #Partition information
    #col_name data_type comment
    ds        string
    hour      string
     */

    val sqlStr =
      s"""
         |insert overwrite into daily_visit partition (date='$date')    //日期,通常是通过参数传进来的
         |select date,count(distinct guid) uv,sum(pv) pv,
         |count(case when pv>=2 then sessionid else null end) second_num,
         |count(sessionid) visits from
         |(select ds date, sessionid, max(guid) guid, count(url) pv from tracklog and hour='18'
         |group by ds,sessionid) a
         |group by date
       """.stripMargin

    println("执行中。。。"+sqlStr)

    //返回dataframe,即dataset
    val rdd = ss.sql(sqlStr)
    rdd.rdd.foreach(println)

    /*
    把hive-site.xml放到工程里,执行无法直接连上hive!!!
    spark通过thrift服务,访问hive元数据库
    在pom中加入
    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://master:9083</value>
    </property>
    在idea上从来没有实现过,所以还是打包去集群去运行把!
    原因是idea无法连上thrift://master:9083
     */

    /*
    结果落到hive表
    在hive中建表:
    create table daily_visit(
    //date string因为是分区表,所以这个日期就不要里
    uv bigint,
    pv bigint,
    second_num bigint,
    visits bigint) partitioned by(date string)

    show tables
    desc daily_visit

     */

  }

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值