HiveDataSource

package com.bjsxt.scala.spark.sql.hive

import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
import org.apache.spark.sql.hive.HiveContext

/**
 * @author Administrator
 */
object HiveDataSource {
  def main(args: Array[String]): Unit = {
    val conf = new SparkConf()
      .setAppName("HiveDataSource");
    val sc = new SparkContext(conf);
    val hiveContext = new HiveContext(sc);
    hiveContext.sql("DROP TABLE IF EXISTS student_infos");
    hiveContext.sql("CREATE TABLE IF NOT EXISTS student_infos (name STRING, age INT) row format delimited fields terminated by '\t'");
    hiveContext.sql("LOAD DATA "
      + "LOCAL INPATH '/root/resource/student_infos' "
      + "INTO TABLE student_infos");

    hiveContext.sql("DROP TABLE IF EXISTS student_scores");
    hiveContext.sql("CREATE TABLE IF NOT EXISTS student_scores (name STRING, score INT) row format delimited fields terminated by '\t'");
    hiveContext.sql("LOAD DATA "
      + "LOCAL INPATH '/root/resource/student_scores' "
      + "INTO TABLE student_scores");

    val goodStudentsDF = hiveContext.sql("SELECT si.name, si.age, ss.score "
      + "FROM student_infos si "
      + "JOIN student_scores ss ON si.name=ss.name "
      + "WHERE ss.score>=80");
    hiveContext.sql("DROP TABLE IF EXISTS result.good_student_infos");
//    goodStudentsDF.saveAsTable("good_student_infos");
    hiveContext.sql("USE result")
    
    //将goodStudentsDF里面的值写入到Hive表中,如果表不存在,会自动创建然后将数据插入到表中
    goodStudentsDF.write.saveAsTable("good_student_infos")

  }
}

  

posted @ 2018-06-23 16:42  uuhh  阅读(300)  评论(0)    收藏  举报