使用Saprk SQL 操作Hive的数据

前提准备:

1、启动Hdfs,hive的数据存储在hdfs中;

2、启动hive -service metastore,元数据存储在远端,可以远程访问;

3、在spark的conf目录下增加hive-site.xml配置文件,文件内容:

<configuration>
<property>
<name>hive.metastore.uris</name>
<value>thrift://node1:9083</value>
</property>
</configuration>

编写Scala测试程序:

object Hive {
def main(args: Array[String]) {
val conf = new SparkConf()
.setAppName("HiveDataSource")
.setMaster("spark://node1:7077") val sc = new SparkContext(conf);
val hiveContext = new HiveContext(sc); hiveContext.sql("SHOW tables").show()
sc.stop()
}
}

将程序打包到spark主机,通过spark-submit命令执行:

./bin/spark-submit  --class com.spark.test.Hive --master spark://node1:7077  ./jar/Test.jar

关于spark-submit命令的说明,参考官网:

http://spark.apache.org/docs/1.6.0/submitting-applications.html

注意点:

1、--deploy-mode cluster 在集群模式中要注意将jar文件放到hdfs中或都存在的文件位置中。

集群模式是将程序发布到works节点运行driver程序。本地模式只运行在程序提交的节点上client,结果也只输出在终端。

--------------------------------------------------------------------------------------------------------------

重新配置CDH版本的应用,spark调用hive, 出现了找不到jar包,及配置文件的情况。

错误信息:

WARN  [Driver] metastore.HiveMetaStore: Retrying creating default database after error: Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found.
javax.jdo.JDOFatalUserException: Class org.datanucleus.api.jdo.JDOPersistenceManagerFactory was not found.
ERROR [Driver] yarn.ApplicationMaster: User class threw exception: java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
java.lang.RuntimeException: org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient

这里通过增加调用参数来实现:

/home/hadoop/app/spark-1.6.0-cdh5.10.0/bin/spark-submit \
--class HiveSql \
--master yarn-cluster \
--executor-memory 512m \
--num-executors 2 \
--files /home/hadoop/app/spark-1.6.0-cdh5.10.0/conf/hive-site.xml \
--jars /home/hadoop/lib/datanucleus-rdbms-3.2.9.jar,/home/hadoop/lib/datanucleus-core-3.2.10.jar,/home/hadoop/lib/datanucleus-api-jdo-3.2.6.jar \
spark-vmware-sql.jar

引入下面三个jar包,在spark和hive的lib目录下可以找到。

datanucleus-core-3.2.10.jar

datanucleus-api-jdo-3.2.6.jar

datanucleus-api-jdo-3.2.6.jar

 

Spark SQL -- Hive的更多相关文章

  1. Spark SQL Hive Support Demo

    前提: 1.spark1.0的包编译时指定支持hive:./make-distribution.sh --hadoop 2.3.0-cdh5.0.0 --with-yarn --with-hive - ...

  2. Caused by: java.sql.SQLException: Failed to start database 'metastore_db' with class loader org.apache.spark.sql.hive.client.IsolatedClientLoader$$anon$1@d7c365, see the next exception for details.

    解决方法:https://stackoverflow.com/questions/37442910/spark-shell-startup-errors 异常: 18/01/29 19:04:27 W ...

  3. local模式运行spark-shell时报错 java.lang.IllegalArgumentException: Error while instantiating 'org.apache.spark.sql.hive.HiveSessionState':

    先前在local模式下,什么都不做修改直接运行./spark-shell 运行什么问题都没有,然后配置过在HADOOP yarn上运行,之后再在local模式下运行出现以下错误: java.lang. ...

  4. spark sql/hive小文件问题

    针对hive on mapreduce 1:我们可以通过一些配置项来使Hive在执行结束后对结果文件进行合并: 参数详细内容可参考官网:https://cwiki.apache.org/conflue ...

  5. 小记---------spark组件与其他组件的比较 spark/mapreduce ;spark sql/hive ; spark streaming/storm

    Spark与Hadoop的对比   Scala是Spark的主要编程语言,但Spark还支持Java.Python.R作为编程语言 Hadoop的编程语言是Java    

  6. Spark记录-org.apache.spark.sql.hive.HiveContext与org.apache.spark.sql.SQLContext包api分析

    HiveContext/SQLContext val hiveContext=new HiveContext(new SparkContext(new SparkConf().setAppName(& ...

  7. Error while instantiating 'org.apache.spark.sql.hive.HiveSessionStateBuilder': —— windows 开发环境使用spark 无法访问hdfs 问题解决

    ## 错误: ## 解决方案: 下载 hadoop 的可执行tar包,解压放在windows 本地,并配置环境变量. 在 解压后的文件夹的bin目录下放入两个文件: winutils.exe, had ...

  8. Spark SQL读取hive数据时报找不到mysql驱动

    Exception: Caused by: org.datanucleus.exceptions.NucleusException: Attempt to invoke the "BoneC ...

  9. spark SQL学习(spark连接hive)

    spark 读取hive中的数据 scala> import org.apache.spark.sql.hive.HiveContext import org.apache.spark.sql. ...

随机推荐

  1. FI配置步骤清单.枫

    1.    说明 本版本的FI模块配置内容非常少,主要应用的是系统默认的配置参数,但能完成基本的总帐.应收.应付操作. 配置内容包含以下几部分: 1.  基本的组织结构定义及分配,以及公司代码的全局性 ...

  2. VS2008 试图运行未注册64位调试器组件

    安装即可

  3. java截取电脑全屏

    通过java代码截取电脑屏幕全屏代码如下: import java.awt.AWTException; import java.awt.Dimension; import java.awt.Recta ...

  4. 更多内容 - 请关注我的 CSDN 博客

    欢迎关注我的 CSDN 博客 因为粉丝多数是在 CSDN 上,所以更多内容放在了 我的 CSDN 博客: [点击跳转] 地址:https://icode.blog.csdn.net

  5. Android Relative Layout 安卓相对布局详解

    思维导图可在幕布找到 1. 基础 如果在相对布局里,控件没有指明相对位置,则默认都是在相对布局的左上角: <TextView android:layout_width="wrap_co ...

  6. Python 开发者在迁移到 Go(lang) 时需要知道哪些事?

    [编者按]本文最早由 Repustate 发布,主要介绍将代码迁移至 Go(lang) 时的注意事项.文章系国内 ITOM 管理平台 OneAPM 编译呈现,以下为正文. 这是一篇讲述将大块 Pyth ...

  7. SQL Server 的 RowGuid/RowGuidCol 是什么意思?

    SQL Server 中设计表时,有个属性叫 RowGuid(用 SQL 时,关键词是 RowGuidCol),这个是什么意思呢?这个是全局唯一标识符,与“标识”不同,标识是只在本表中唯一,全局唯一标 ...

  8. shell脚本常用技巧

    shell脚本常用技巧 1.获取随机字符串或数字 ~]#echo $RANDOM | md5sum | cut -c 1-6 ~]#openssl rand -base64 4 | cut -c 1- ...

  9. 10分钟让你明白MySQL是如何利用索引的

    一.前言 在MySQL中进行SQL优化的时候,经常会在一些情况下,对MySQL能否利用索引有一些迷惑. 譬如: MySQL 在遇到范围查询条件的时候就停止匹配了,那么到底是哪些范围条件? MySQL ...

  10. USB 相关笔记

    1分析已有代码项目 Android从USB声卡录制高质量音频-----使用libusb读取USB声卡数据 github 项目:usbaudio-android-demo usb声卡取数据项目也是参考的 ...