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

     */

  }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 以下是一个基于 SparkHive简单例子代码: ``` from pyspark.sql import SparkSession # 创建 SparkSession spark = SparkSession.builder.appName("Spark-Hive Example").enableHiveSupport().getOrCreate() # 读取 Hive 表数据 df = spark.sql("SELECT * FROM database.table") # 对数据进行操作,例如过滤、聚合等 filtered_df = df.filter(df.column > value) aggregated_df = filtered_df.groupBy().agg({"column": "avg"}) # 将结果写入 Hive 表 aggregated_df.write.mode("overwrite").saveAsTable("database.output_table") # 停止 SparkSession spark.stop() ``` 注意:在实际使用中,需要替换 `database.table` 和 `database.output_table` 为实际存在的 Hive 表名称。 ### 回答2: Spark Hive是一种将SparkHive结合起来使用的框架,它允许我们在Spark中执行Hive语句和操作Hive表。下面是一个简单Spark Hive例子代码示例: 1. 导入所需的包和模块: ```scala import org.apache.spark.SparkConf import org.apache.spark.sql.SparkSession ``` 2. 创建SparkSession和相关配置: ```scala val conf = new SparkConf().setAppName("Spark Hive Example") val spark = SparkSession.builder().config(conf).enableHiveSupport().getOrCreate() ``` 3. 执行Hive SQL查询: ```scala val query = "SELECT * FROM table_name" val result = spark.sql(query) ``` 4. 打印查询结果: ```scala result.show() ``` 在这个例子中,我们首先导入所需的包和模块。然后,我们创建一个SparkSession并配置它以支持Hive。接下来,我们使用`spark.sql`方法执行一个Hive SQL查询,并将结果保存在一个DataFrame中。最后,我们使用`show`方法打印出查询结果。 需要注意的是,运行这个例子之前,你需要确保已经正确配置了SparkHive,并且已经创建了所需的Hive表。此外,你还需要将相应的Hive配置文件(如hive-site.xml)放在正确的位置。 以上就是一个简单Spark Hive例子代码示例,它展示了如何在Spark中使用Hive。通过结合SparkHive,我们可以更方便地执行Hive操作和查询,并充分利用Spark强大的分布式计算能力。 ### 回答3: Spark Hive例子代码如下: ```scala import org.apache.spark.sql.SparkSession object SparkHiveExample { def main(args: Array[String]): Unit = { // 创建SparkSession val spark = SparkSession.builder() .appName("Spark Hive Example") .master("local") .enableHiveSupport() // 启用Hive支持 .getOrCreate() // 导入Hive表所在的数据库 spark.sql("use database_name") // 创建一张Hivespark.sql( """ |CREATE TABLE IF NOT EXISTS employee( | id INT, | name STRING, | age INT, | salary DOUBLE |) |ROW FORMAT DELIMITED |FIELDS TERMINATED BY ',' |STORED AS TEXTFILE |""".stripMargin) // 加载数据到Hive表中 spark.sql( """ |LOAD DATA LOCAL INPATH '/path/to/employee_data.csv' |OVERWRITE INTO TABLE employee |""".stripMargin) // 查询Hive表中的数据 spark.sql("SELECT * FROM employee").show() // 关闭SparkSession spark.stop() } } ``` 请注意替换数据库名、数据文件路径和表结构与路径,以适应实际情况。此代码示例使用SparkSession来创建与SparkHive集成的应用程序。首先,通过`enableHiveSupport`启用Hive支持。然后,使用`spark.sql`方法可以在Spark中执行Hive查询语句。在此示例中,我们使用`use`命令导入Hive数据库,创建一个新的Hive表,并将数据加载到该表中。最后,我们使用`show`方法显示Hive表的内容,并使用`stop`方法关闭SparkSession。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值