热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

sparksql操作hive_spark连接hive的两种方式

在pom中添加依赖xmlns:xsihttp:www.w3.org2001XMLSchema-instancexsi:schemaLocationhttp:maven.apa

在pom中添加依赖

xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

4.0.0

emg

emg.spark

1.0-SNAPSHOT

org.apache.spark

spark-core_2.11

2.1.1

org.apache.spark

spark-sql_2.11

2.1.1

org.apache.spark

spark-hive_2.11

2.1.1

org.scala-lang

scala-library

2.11.8

org.scala-lang

scala-compiler

2.11.8

org.scala-lang

scala-reflect

2.11.8

org.apache.hadoop

hadoop-common

2.7.2

org.apache.hadoop

hadoop-hdfs

2.7.2

log4j

log4j

1.2.17

mysql

mysql-connector-java

5.1.38

org.apache.hive

hive-jdbc

1.1.0

net.alchim31.maven

scala-maven-plugin

3.2.2

org.apache.maven.plugins

maven-compiler-plugin

3.5.1

net.alchim31.maven

scala-maven-plugin

scala-compile-first

process-resources

add-source

compile

scala-test-compile

process-test-resources

testCompile

org.apache.maven.plugins

maven-compiler-plugin

compile

compile

org.apache.maven.plugins

maven-shade-plugin

2.4.3

package

shade

*:*

META-INF/*.SF

META-INF/*.DSA

META-INF/*.RSA

implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">

emg.branchs.EmgFilterDemo

方式1.使用sparkSQL直接连接hive

经自己测试 ,hive的metastore启动不了,只启动hiveServer2,这种方式一直报错,找不到hive的元数据库

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

val Array(inpath, dt, hour) = args

val conf = new SparkConf().setAppName(this.getClass.getSimpleName)

//.setMaster("local[*]")

.setMaster("spark://192.168.40.52:7077")

val session = SparkSession.builder()

.config(conf)

// 指定hive的metastore的端口 默认为9083 在hive-site.xml中查看

.config("hive.metastore.uris", "thrift://192.168.40.51:9083")

//指定hive的warehouse目录

.config("spark.sql.warehouse.dir", "hdfs://192.168.40.51:9000/user/hive/warehouse")

//直接连接hive

.enableHiveSupport()

.getOrCreate()

import session.implicits._

val df1 = session.read.parquet(inpath)

//df1.write.saveAsTable(s"tmp.tmp_app_log_1")

df1.createOrReplaceTempView("tmp_app_log_test")

//sql的代码省略

val sql1 =

s"""

|select *

|from tmp_app_log_test

""".stripMargin

val hive_table = "dwb2.fact_mbk_offline_log_mbk_app_action_event_v2_i_h"

val sql2 = s"alter table $hive_table add if not exists partition ( dt='$dt',hour='$hour')"

session.sql(sql2)

val tmp_table =s"""tmp.app_log_${dt}_${hour}"""

val sql3 = s"""drop table IF EXISTS $tmp_table""".stripMargin

session.sql(sql3)

val df2 = session.sql(sql1)

//结果先写入临时表

df2.write.saveAsTable(tmp_table)

//结果从临时表写入分区表

val sql4 =

s"""INSERT OVERWRITE TABLE $hive_table

|PARTITION( dt='$dt',hour='$hour')

| select * from $tmp_table """.stripMargin

session.sql(sql4)

val sql5 = s"""drop table IF EXISTS $tmp_table""".stripMargin

session.sql(sql5)

}

方式2 使用jdbc连接hive

经自己测试  hive的metastore启动不了 只启动hiveServer2  jdbc连接方式可以正常使用

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

//经自己测试 hive的metastore启动不了 只启动hiveServer2 jdbc连接方式可以正常使用

val conf = new SparkConf().setAppName(this.getClass.getSimpleName)

//.setMaster("local[*]")

.setMaster("spark://192.168.40.**:7077")

val session = SparkSession.builder()

.config(conf)

.getOrCreate()

//注意这里的写法 好像是hive1.3版本以上不一样了 自行百度

val url = "jdbc:hive2://192.168.40.**:10000/emg"

val username = "root"

val password = "123456"

val driverName = "org.apache.hive.jdbc.HiveDriver"

try {

Class.forName(driverName)

} catch {

case e: ClassNotFoundException =>

println("Missing Class", e)

}

val con: Connection = DriverManager.getConnection(url, username, password)

val state = con.createStatement()

import session.implicits._

var paths = "/user/emg/cxb_out/" + CurrentTime.getMonthDate() + "/" + CurrentTime.getYesterday() + "/" + CurrentTime.getHourDate() + "/"

//由于hive的元数据库启动不了 连接不上 只能用jdbc的方式将结果load进hive表中

var sql2 = "load data inpath '" + paths + "' into table result01"

try {

val assertion = state.execute(sql2)

state.execute(sql2)

println("===============================存入hvie成功==========================")

} catch {

case e: Exception => e.printStackTrace()

} finally {

if (null != con) {

con.close()

}

}

/* val sql =

"""

|create external table zz_result(id bigint,lat float,lon float,utc bigint,tags int)

|row format delimited fields terminated by '\t' location '/user/hive/zz'

""".stripMargin

state.executeQuery(sql)

println("建表成功")

try {

val assertion = state.execute(sql)

state.execute(sql)

println("===============================存入hvie成功==========================")

} catch {

case e: Exception => e.printStackTrace()

} finally {

if (null != con) {

con.close()

}

}

*/

session.close()

}



推荐阅读
  • 《Spark核心技术与高级应用》——1.2节Spark的重要扩展
    本节书摘来自华章社区《Spark核心技术与高级应用》一书中的第1章,第1.2节Spark的重要扩展,作者于俊向海代其锋马海平,更多章节内容可以访问云栖社区“华章社区”公众号查看1. ... [详细]
  • 本文_大数据之非常详细Sqoop安装和基本操作
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了大数据之非常详细Sqoop安装和基本操作相关的知识,希望对你有一定的参考价值。大数据大数据之 ... [详细]
  • 一、Hadoop来历Hadoop的思想来源于Google在做搜索引擎的时候出现一个很大的问题就是这么多网页我如何才能以最快的速度来搜索到,由于这个问题Google发明 ... [详细]
  • 本文介绍了在Win10上安装WinPythonHadoop的详细步骤,包括安装Python环境、安装JDK8、安装pyspark、安装Hadoop和Spark、设置环境变量、下载winutils.exe等。同时提醒注意Hadoop版本与pyspark版本的一致性,并建议重启电脑以确保安装成功。 ... [详细]
  • Activiti7流程定义开发笔记
    本文介绍了Activiti7流程定义的开发笔记,包括流程定义的概念、使用activiti-explorer和activiti-eclipse-designer进行建模的方式,以及生成流程图的方法。还介绍了流程定义部署的概念和步骤,包括将bpmn和png文件添加部署到activiti数据库中的方法,以及使用ZIP包进行部署的方式。同时还提到了activiti.cfg.xml文件的作用。 ... [详细]
  • 本文讨论了在shiro java配置中加入Shiro listener后启动失败的问题。作者引入了一系列jar包,并在web.xml中配置了相关内容,但启动后却无法正常运行。文章提供了具体引入的jar包和web.xml的配置内容,并指出可能的错误原因。该问题可能与jar包版本不兼容、web.xml配置错误等有关。 ... [详细]
  • 什么是大数据lambda架构
    一、什么是Lambda架构Lambda架构由Storm的作者[NathanMarz]提出,根据维基百科的定义,Lambda架构的设计是为了在处理大规模数 ... [详细]
  • 本文整理了Java中org.apache.pig.backend.executionengine.ExecException.<init>()方法的一些代码 ... [详细]
  • Hadoop源码解析1Hadoop工程包架构解析
    1 Hadoop中各工程包依赖简述   Google的核心竞争技术是它的计算平台。Google的大牛们用了下面5篇文章,介绍了它们的计算设施。   GoogleCluster:ht ... [详细]
  • MySQL锁--(深入浅出读书笔记)
    MySQL锁的概述1.针对不同的引擎,采用不同的锁机制;(表锁,页面锁,行锁)myisam和memory存储引擎:表级锁;BOB存储引擎:页面锁,表级 ... [详细]
  • Kylin 单节点安装
    软件环境Hadoop:2.7,3.1(sincev2.5)Hive:0.13-1.2.1HBase:1.1,2.0(sincev2.5)Spark(optional)2.3.0K ... [详细]
  •        在搭建Hadoop环境之前,请先阅读如下博文,把搭建Hadoop环境之前的准备工作做好,博文如下:       1、CentOS6.7下安装JDK,地址:http:b ... [详细]
  • 我们在之前的文章中已经初步介绍了Cloudera。hadoop基础----hadoop实战(零)-----hadoop的平台版本选择从版本选择这篇文章中我们了解到除了hadoop官方版本外很多 ... [详细]
  • spark的任务已经执行完成:scalavallinesc.textFile(hdfs:vm122:9000dblp.rdf)line:org.apache ... [详细]
  • 开发笔记:大三上寒假15天第5天
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了大三上寒假15天--第5天相关的知识,希望对你有一定的参考价值。昨天的下载完成后运行报错,应该是下载的spark版本和教 ... [详细]
author-avatar
398851412_eedcee
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有