spark代码连接hive_Spark SQL入门到实战之(7)spark连接hive(spark-shell和eclipse两种方式)...
1、在服务器(虚拟机)spark-shell连接hive
1.1 将hive-site.xml拷贝到spark/conf里
cp /opt/apache-hive-2.3.2-bin/conf/hive-site.xml /opt/spark-2.2.1-bin-hadoop2.7/conf/
1.2 将mysql驱动拷贝到spark/jar里
cp /opt/apache-hive-2.3.2-bin/bin/mysql-connector-java-5.1.46-bin.jar /opt/spark-2.2.1-bin-hadoop2.7/jars/
1.3 启动spark-shell,输入代码测试
spark-shell
import org.apache.spark.sql.hive.HiveContext
val hiveContext=new HiveContext(sc)
hiveContext.sql("select * from test").show()
1.4 异常及解决
在执行hiveContext.sql("select * from test").show() 报了一个异常:
The root scratch dir: /tmp/hive on HDFS should be writable. Current permissions are: rwxr-xr-x;
解决办法:
1.4.1 更改HDFS目录/tmp/hive的权限:
hadoop fs -chmod 777 /tmp/hive
1.4.2 同时删HDFS与本地的目录/tmp/hive:
hadoop fs -rm -r /tmp/hiverm -rf /tmp/hive
这次错误采用的是第二种解决办法,有的情况下用第一种方法,比如一次在启动hive时候报这种错误~。
错误截图:
2、win10+eclipse上连接hive
2.1 将hive-site.xml拷贝到项目中的resources文件夹下
2.2 在sbt里添加对应版本的mysql依赖
"mysql" % "mysql-connector-java" % "5.1.46"
2.3 代码
2.3.1 旧版api(1.6以上)
package com.dkl.leanring.spark.sqlimportorg.apache.spark.SparkConfimportorg.apache.spark.sql.SQLContextimportorg.apache.spark.sql.hive.HiveContextimportorg.apache.spark.SparkContext/**
* 旧版本spark-hive测试*/object OldSparkHiveDemo {def main(args: Array[String]): Unit ={
val conf= new SparkConf().setAppName("OldSparkHiveDemo").setMaster("local")
val sc=new SparkContext(conf)
val sqlContext=new SQLContext(sc)importsqlContext.implicits._
val hiveCtx=new HiveContext(sc)
hiveCtx.sql("select * from test").show()
val data= Array((3, "name3"), (4, "name4"), (5, "name5"))
val df= sc.parallelize(data).toDF("id", "name")
df.createOrReplaceTempView("user")
hiveCtx.sql("insert into test select id,name from user")
hiveCtx.sql("select * from test").show()
}
}
(注:其中df.createOrReplaceTempView("user")改为df.registerTempTable("user"),因为createOrReplaceTempView方法是2.0.0才有的,registerTempTable是旧版的方法,1.6.0就有了,嫌麻烦就不改代码重新贴图了)
2.3.2 新版api
package com.dkl.leanring.spark.sqlimportorg.apache.spark.sql.SparkSession/**
* 新版本spark-hive测试*/object NewSparkHiveDemo {def main(args: Array[String]): Unit ={
val spark=SparkSession
.builder()
.appName("Spark Hive Example")
.master("local")
.config("spark.sql.warehouse.dir", "/user/hive/warehouse/")
.enableHiveSupport()
.getOrCreate()importspark.implicits._importspark.sql
sql("CREATE TABLE IF NOT EXISTS src (key INT, value STRING)")
val data= Array((1, "val1"), (2, "val2"), (3, "val3"))
var df= spark.createDataFrame(data).toDF("key", "value")
df.createOrReplaceTempView("temp_src")
sql("insert into src select key,value from temp_src")
sql("SELECT * FROM src").show()
}
}
2.4 异常及解决方法
在执行insert语句时会出现如下异常信息:
原因是:启动 Spark 应用程序的win用户对spark.sql.warehouse.dir没有写权限
解决办法:
hadoop fs -chmod 777 /user/hive/warehouse/
附异常信息截图:
spark代码连接hive_Spark SQL入门到实战之(7)spark连接hive(spark-shell和eclipse两种方式)...相关推荐
- server2008 sql 账号只读权限_SQL Server 2008数据库创建用户只读权限的两种方式(转载)...
最优秀的解决方案: https://www.cnblogs.com/hao-1234-1234/p/12699185.html 其它相关文章: 一.命令行方式创建 新建查询窗口,然后输入以下命令然后执 ...
- Flink 最锋利的武器:Flink SQL 入门和实战
学习路径:<2021年最新从零到大数据专家学习路径指南> 面 试:<2021年最新版大数据面试题全面开启更新> [注意]:Flink1.9版本后的Flink SQL使 ...
- Spark提交代码的两种方式
基于spark1.6测试(虽然很多公司都已经在用2.X了,但是1.6我认为是最经典的版本,CDH最新版本至今默认的spark版本依然是1.6,不过2.X提交方式是基本没有变的) Standalone ...
- php mysql 连接方法 对比_Mysql实例php连接MySQL的两种方式对比
<Mysql实例php连接MySQL的两种方式对比>要点: 本文介绍了Mysql实例php连接MySQL的两种方式对比,希望对您有用.如果有疑问,可以联系我们. MYSQL数据库记录一下P ...
- Java Spark之创建RDD的两种方式和操作RDD
首先看看思维导图,我的spark是1.6.1版本,jdk是1.7版本 spark是什么? Spark是基于内存计算的大数据并行计算框架.Spark基于内存计算,提高了在大数据环境下数据处理的实时性, ...
- spark消费kafka产生数据堆积怎么处理_SparkStreaming读取Kafka的两种方式
本文主要从以下几个方面介绍SparkStreaming读取Kafka的两种方式: 一.SparkStreaming简介 二.Kafka简介 三.Redis简介(可用于保存历史数据或偏移量数据) 四.S ...
- Spark读取Hive数据的两种方式与保存数据到HDFS
Spark读取Hive数据的两种方式与保存数据到HDFS Spark读取Hive数据的方式主要有两种 1. 通过访问hive metastore的方式,这种方式通过访问hive的metastore元数 ...
- 根据官网文档看Spark Streaming对接Kafka的两种方式, 以及如何实现Exactly Once语义
注: 本文算是本人的学习记录, 中间可能有些知识点并不成熟, 不能保证正确性. 只能算是对官网文档作了个翻译和解读, 随时有可能回来更新和纠错 上一篇文章讨论了Spark Streaming的WAL( ...
- 简单介绍python连接telnet和ssh的两种方式
本文主要介绍了python连接telnet和ssh的两种方式,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 Telnet 连接方式 #!/usr/bin/env p ...
最新文章
- 每日一题题目29:五个数字能组成多少互不重复的四位数
- Web API之基于H5客户端分段上传大文件
- 网络波动服务器维护中,官方回应《王者荣耀》游戏无法登录:网络波动导致,已修复...
- 使用OpenFlashChart 2.0结合asp.net的问题(解疑)
- 初学者可能不知道的 vue.js技巧
- nginx+keepalived互为主主高可用配置
- javaEE的开发模式
- lseek、stat、access、chmod、strtol、truncate、unlink
- 目标2020:'鼠'你最棒!
- 内部类 java 1614957119
- 零基础快速入门web学习路线(含视频教程)
- 把一个人的特点写具体作文_五年级下册语文习作把一个人的特点写具体教学视频+教案课件+范文...
- Python模块——xml
- C4D阿诺德Arnold渲染器介绍
- 第十七章 - 垃圾回收器
- Filter中获取传递参数(解决post请求参数问题)
- matlab如何进行图像读取,matlab如何读取图像
- ICML2022论文解读『Sparse Double Descent: Where Network Pruning Aggravates Overfitting』
- 查询名字重复但不是相同的人的记录
- 跨国面板数据(1960-2020)十三:GDP、人均GDP、国民收入、储蓄(excel、stata版)