Spark SQL读取hive数据时报找不到mysql驱动
Exception:
Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "BoneCP" plugin to create a ConnectionPool gave an error : The specified datastore driver ("com.mysql.jdbc.Driver") was not found in the CLASSPATH. Please check your CLASSPATH specification, and the name of the driver.
Solution:
1、$HIVE_HOME/conf/hive-site.xml中增加关于 hive.metastore.uris 的配置信息,如下:
<property>
<name>hive.metastore.uris</name>
<value>thrift://namenode1:9083</value>
<description>IP address (or fully-qualified domain name) and port of the metastore host</description>
</property> 2、执行:$HIVE_HOME/bin/hive --service metastore,启动元数据存储服务; 3、将$HIVE_HOME/conf/hive-site.xml拷贝至$SPARK_HOME/conf/目录下; 4、启动spark-shell进行验证:$SPARK_HOME/bin/spark-shell --master namenode1:7077或spark-sql -> show databases. Note:
1. 当在Intellij IDE中编写Spark SQL程序时(val hiveContext = new HiveContext(sc); import hiveContext.sql; sql("show databases")),打包成相应的.jar文件,并利用如下脚本将任务提交到Spark集群运行时,Spark默认采用derby进行metastore,即元数据的存储;当再次在不同目录下执行该任务时,之前创建的数据库或表数据无法获取,有点即用即删的感觉。故要想访问Hive下的元数据,首先需要将Hive目录下的配置文件中的hive-site.xml文件放到Spark目录下的配置文件中,让Spark集群执行程序时能识别进入Hive元数据的路径,然后启动上述服务(hive --service metastore)即可访问Hive相应数据。 2.
/**
* An instance of the Spark SQL execution engine that integrates with data stored in Hive.
* Configuration for Hive is read from hive-site.xml on the classpath.
*/
class HiveContext(sc: SparkContext) extends SQLContext(sc) { .................................... }
3.
Use HiveContext instead. It will still create a local metastore if one is not specified. However, note that the default directory is ./metastore_db, not ./metastore
测试程序如下:
package com.husor.Hive
import org.apache.spark.{SparkContext, SparkConf}
import org.apache.spark.sql.hive.HiveContext
/* Spark SQL执行时的sql是临时的,即用即删 **/
/**
* Created by kelvin on 2015/1/27.
*/
object Recommendation {
def main(args: Array[String]) {
println("Test is starting......")
if (args.length < ) {
System.err.println("Usage:HDFS_OutputDir <Directory>")
System.exit()
}
//System.setProperty("hadoop.home.dir", "d:\\winutil\\")
val conf = new SparkConf().setAppName("Recommendation")
val spark = new SparkContext(conf)
val hiveContext = new HiveContext(spark)
import hiveContext.sql
/*sql("create database if not exists baby")
val databases = sql("show databases")
databases.collect.foreach(println)*/
sql("use baby")
/*sql("CREATE EXTERNAL TABLE if not exists origin_orders (oid string, uid INT, gmt_create INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION '/beibei/order'")
sql("CREATE EXTERNAL TABLE if not exists items (iid INT, pid INT, title string, cid INT, brand INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION '/beibei/item'")
sql("CREATE EXTERNAL TABLE if not exists order_item (oid string, iid INT) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n' LOCATION '/beibei/order_item'")
sql("create table if not exists test_orders(oid string, uid INT, gmt_create INT)")
sql("create table if not exists verify_orders(oid string, uid INT, gmt_create INT)")
sql("insert OVERWRITE table test_orders select * from origin_orders where gmt_create <= 1415635200")
sql("insert OVERWRITE table verify_orders select * from origin_orders where gmt_create > 1415635200")
val tables = sql("show tables")
tables.collect.foreach(println)*/
sql("SET spark.sql.shuffle.partitions = 5")
val olderTime = System.currentTimeMillis()
val userOrderData = sql("select i.pid, o.uid, o.gmt_create from items i " +
"join order_item oi " +
"on i.iid = oi.iid " +
"join test_orders o " +
"on oi.oid = o.oid")
userOrderData.take().foreach(println)
val newTime = System.currentTimeMillis()
println("Consume Time: " + (newTime - olderTime))
userOrderData.saveAsTextFile(args())
spark.stop()
println("Test is Succeed!!!")
}
}
Spark SQL读取hive数据时报找不到mysql驱动的更多相关文章
- spark sql 访问hive数据时找不mysql的解决方法
我尝试着在classpath中加n入mysql的驱动仍不行 解决方法:在启动的时候加入参数--driver-class中加入mysql 驱动 [hadoop@master spark-1.0.1-bi ...
- Spark SQL 操作Hive 数据
Spark 2.0以前版本:val sparkConf = new SparkConf().setAppName("soyo") val spark = new SparkC ...
- Spark教程——(10)Spark SQL读取Phoenix数据本地执行计算
添加配置文件 phoenixConnectMode.scala : package statistics.benefits import org.apache.hadoop.conf.Configur ...
- Spark SQL读取Oracle的number类型的数据时精度丢失问题
Spark SQL读取数据Oracle的数据时,发现number类型的字段在读取的时候精度丢失了,使用的spark版本是Spark2.1.0的版本,竟然最后经过排查和网上查资料发现是一个bug.在Sp ...
- Spark sql 在yarn-cluster模式下找不到表
在hive里建一个数据库test,在数据库里建了一张表user,然后在Spark程序中使用Spark sql读取这张表 "select * form test.user" 当部署模 ...
- spark SQL读取ORC文件从Driver启动到开始执行Task(或stage)间隔时间太长(计算Partition时间太长)且产出orc单个文件中stripe个数太多问题解决方案
1.背景: 控制上游文件个数每天7000个,每个文件大小小于256M,50亿条+,orc格式.查看每个文件的stripe个数,500个左右,查询命令:hdfs fsck viewfs://hadoop ...
- spark2.3.0 配置spark sql 操作hive
spark可以通过读取hive的元数据来兼容hive,读取hive的表数据,然后在spark引擎中进行sql统计分析,从而,通过spark sql与hive结合实现数据分析将成为一种最佳实践.配置步骤 ...
- spark sql数据源--hive
使用的是idea编辑器 spark sql从hive中读取数据的步骤:1.引入hive的jar包 2.将hive-site.xml放到resource下 3.spark sql声明对hive的支持 案 ...
- Spark SQL with Hive
前一篇文章是Spark SQL的入门篇Spark SQL初探,介绍了一些基础知识和API,可是离我们的日常使用还似乎差了一步之遥. 终结Shark的利用有2个: 1.和Spark程序的集成有诸多限制 ...
随机推荐
- Cocos2dx Android工程的启动过程
1.安卓工程下的设置启动activity为src下面的AppActivity,启动调用的onCreate并没有做过多的事情,只是调用了父类Cocos2dxActivity的onCreate.AppAc ...
- 【网络编程】服务端产生大量的close_wait状态的进程分析
首先要明白close_wait状态是在tcp通信四次握手时的一个中间状态: 即当被动关闭方发送完ACK后进入的状态.这个状态的结束,即要达到下一个状态LASK_ACK需要在发无端发送完剩余的数据后(s ...
- python的魔术方法
什么叫魔术方法: 在python中定义以双下划线开头,有一些python自定义的函数,并且以双下划线为结尾的函数叫做魔法函数 class Company(object): def __init__(s ...
- react项目的ant-design-mobile的使用
现在测试一下ant-design-mobile的使用,引用一个Button 没有样式 这个问题是没有引入样式 解决方法有两种 这种方法自己弄不出来,然后用另外一种方法 引入样式: import 'an ...
- [leetcode]67. Add Binary 二进制加法
Given two binary strings, return their sum (also a binary string). The input strings are both non-em ...
- UI动画优化技巧
知乎上一篇比较好的文章,分享一下: tabs slide 内容过渡动画 好的动画会淡化页面直接的过度. 但更好的做法是使用连续的动画来来过度内容 当我们在设计交互式选项卡或弹出式菜单的时候,尝试将内容 ...
- python的配置
1.下载python https://jingyan.baidu.com/article/0bc808fc42dfab1bd485b99f.html 2.转载:https://www.cnblogs. ...
- scrollIntoView()窗口滚动
1.某DIV窗口滚动到顶部: document.getElementById("某DIV的ID").scrollIntoView(true); 2.某DIV窗口滚动到底部: doc ...
- Pandas plot出图
1.创建一个Series 这是一个线性的数据,我们随机生成1000个数据,Series 默认的 index 就是从0开始的整数,但是这里我显式赋值以便让大家看的更清楚 >>> imp ...
- SSL、TLS协议格式、HTTPS通信过程、RDP SSL通信过程(缺heartbeat)
SSL.TLS协议格式.HTTPS通信过程.RDP SSL通信过程 相关学习资料 http://www.360doc.com/content/10/0602/08/1466362_30787868 ...