hive on spark(版本兼容)
官网https://cwiki.apache.org/confluence/display/Hive/Hive+on+Spark%3A+Getting+Started
spark on hive(版本兼容)
官网
http://spark.apache.org/docs/2.1.1/sql-programming-guide.html#hive-tables
如果你在集群上使用了tez,你需要在spark/conf下spark-defaults.conf添加lzo的路径
spark.jars=/export/servers/hadoop-2.7.7/share/hadoop/common/hadoop-lzo-0.4.20.jar
spark-yarn模式启动
bin/spark-shell --master yarn
完全跟sql一样
spark-sql 得到的结果不够友好, 所以可以使用hiveserver2 + beeline
1.启动thriftserver(后台)
sbin/start-thriftserver.sh
2.启动beeline
bin/beeline
# 然后输入
!connect jdbc:hive2://hadoop102:10000
# 然后按照提示输入用户名和密码
添加依赖
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-hive_2.11</artifactId>
<version>2.1.1</version>
</dependency>
代码实现
import org.apache.spark.sql.SparkSession
object HiveRead {
def main(args: Array[String]): Unit = {
val spark = SparkSession
.builder()
.master("local[*]")
.appName("HiveRead")
//添加支持外置hive
.enableHiveSupport()
.getOrCreate()
spark.sql("show databases")
spark.sql("use guli")
spark.sql("select count(*) from gulivideo_orc").show()
spark.close()
}
}
结果
import org.apache.spark.sql.SparkSession
object HiveWrite {
def main(args: Array[String]): Unit = {
System.setProperty("HADOOP_USER_NAME", "root");
val spark = SparkSession
.builder()
.master("local[*]")
.appName("HiveRead")
//添加支持外置hive
.enableHiveSupport()
.config("spark.sql.warehouse.dir","hdfs://hadoop102:9000/user/hive/warehouse")
.getOrCreate()
//先创建一个数据库
spark.sql("create database spark1602")
spark.sql("use spark1602")
spark.sql("create table user1(id int,name string)")
spark.sql("insert into user1 values(10,'lisi')").show()
spark.close()
}
}
import org.apache.spark.sql.SparkSession
object HiveWrite {
def main(args: Array[String]): Unit = {
System.setProperty("HADOOP_USER_NAME", "root");
val spark = SparkSession
.builder()
.master("local[*]")
.appName("HiveRead")
//添加支持外置hive
.enableHiveSupport()
.config("spark.sql.warehouse.dir","hdfs://hadoop102:9000/user/hive/warehouse")
.getOrCreate()
val df = spark.read.json("D:\\idea\\spark-sql\\input\\user.json")
spark.sql("use spark1602")
//直接把数据写入到hive中,表可以存在也可以不存在
df.write.saveAsTable("user2")
//也可以进行追加
//df.write.mode("append").saveAsTable("user2")
spark.close()
}
}
import org.apache.spark.sql.SparkSession
object HiveWrite {
def main(args: Array[String]): Unit = {
System.setProperty("HADOOP_USER_NAME", "root");
val spark = SparkSession
.builder()
.master("local[*]")
.appName("HiveRead")
//添加支持外置hive
.enableHiveSupport()
.config("spark.sql.warehouse.dir","hdfs://hadoop102:9000/user/hive/warehouse")
.getOrCreate()
val df = spark.read.json("D:\\idea\\spark-sql\\input\\user.json")
spark.sql("use spark1602")
df.write.insertInto("user2")
spark.close()
}
}
saveAsTable
使用列名进行分配值
insertInto
按照位置进行1对1
import org.apache.spark.sql.SparkSession
object HiveWrite {
def main(args: Array[String]): Unit = {
System.setProperty("HADOOP_USER_NAME", "root");
val spark = SparkSession
.builder()
.master("local[*]")
.appName("HiveRead")
//添加支持外置hive
.enableHiveSupport()
.config("spark.sql.warehouse.dir","hdfs://hadoop102:9000/user/hive/warehouse")
.getOrCreate()
val df = spark.read.json("D:\\idea\\spark-sql\\input\\user.json")
df.createOrReplaceTempView("a")
spark.sql("use spark1602")
val df1 = spark.sql("select * from a ")
val df2 = spark.sql("select sum(age) sum_age from a group by name")
println(df1.rdd.getNumPartitions)
println(df2.rdd.getNumPartitions)
df1.write.saveAsTable("a3")
df2.write.saveAsTable("a4")
spark.close()
}
}
结果:聚合函数分区数默认200个
如果数据量小,没必要200两个分区,简直浪费
将
df2.write.saveAsTable("a4")
修改为
df2.coalesce(1).write.saveAsTable("a4")
文章浏览阅读539次。好久没写没写博客了,这个习惯可不能丢。学习还是需要不断积累的。三流程序员更不能懈怠。感觉似乎立即就要被淘汰。Spring RestTemplate Post方法因为项目本身就是使用为服务架构,所以不可避免地使用了spring boot的东西。现在关于面向资源的restful这么流行,所以老板说啥就是啥了。是一个接口需要升级,以前的一些json参数需要调整,url地址也发生了变化。(另一个团..._spring resttemplate post
文章浏览阅读1.7k次。ES6--箭头函数this转自ES6标准新增了一种新的函数:Arrow Function(箭头函数)。为什么叫Arrow Function?因为它的定义用的就是一个箭头:x => x * x上面的箭头函数相当于:function (x) { return x * x}箭头函数相当于匿名函数,并且简化了函数定义。箭头函数有两种格式,一种像上面的,只包含一个表达式(放在同一行..._es6--箭头函数
文章浏览阅读946次。废话不多说,直接上代码:import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;public class TestService { publ._oracle批处理java
文章浏览阅读81次。在css中单位长度用的最多的是px、em、rem,这三个的区别是: px是固定的像素,一旦设置了就无法因为适应页面大小而改变。 em和rem相对于px更具有灵活性,他们是相对长度单位,意思是长度不是定死了的,更适用于响应式布局。对于em和rem的区别一句话概括:em相对于父元素,rem相对于根元素。rem中的r意思是root(根源),这也就不难理解了。em..._css rem 与 em的区别
文章浏览阅读3.3k次。如果是无意弄丢桌面图标用ctrl+alt+del然后在任务管理器中点“新任务”然后运行“explorer.exe”即可。如果是病毒原因可按照下面方法形式(from 互联网} 1.更改文件夹选项,在文件夹选项--查看中选择“显示所有文件和文件夹”,去掉“隐藏受保护的操作系统文件(推荐)”前面的勾。 2.删除移动硬盘中3个文件:autorun.inf、EXPLORER.EXE、wsctf.exe..._文件夹打开不显示在桌面上
文章浏览阅读1.5k次。opencv直接采集rtsp流opencv源码下载ubuntu18.04 命令行安装采集rtsp流数据cmake编译文件opencv源码下载git clone https://github.com/opencv/opencv.gitubuntu18.04 命令行安装查找是否安装opencvpkg-config opencv --libs安装sudo apt inst..._android opencv获取rtsp视频流
文章浏览阅读3.3k次,点赞7次,收藏15次。LLMs:《A Survey on Evaluation of Large Language Models大型语言模型评估综述》翻译与解读LLMs:大型语言模型评估研究综述—理解智能本质(具备推理能力)、AI评估的重要性(识别当前算法的局限性+设计更强大模型的关键工具)、评估LLMs的四大意义、三维度(What+Where+How)综述LLMs评估、LLMs大语言模型的三大关键(Transformer+RLHF+提示工程)、评估LLMs任务六大类(NLURG+REBT+SS+NS+MA+Agent_a survey on evaluation of large language models
文章浏览阅读2.3k次。如果在IDEA上运行Tomcat报错java.lang.IllegalStateException: 鍚姩瀛愮骇鏃跺嚭閿� 那么就要检查自己的web.xml文件或者pro.xmlwen'jian_鍚 姩瀛愮骇鏃跺嚭閿
文章浏览阅读668次。最近法师收到了很多留言,其中有一部分问法师什么时候更新,还有一大部分问法师我是买迅为的IMX6UL精英版好呢还是买4412精英版好呢,因为我们这俩个都不贵。法师的建议的是入手4412!为什么呢? 第一,4412是三星第一款经典处理器,为三星创造了辉煌,是当年在国内红得发紫的GalaxyS3手机的主控,他的出现,开启了手机和平板的四核时代,让手机和平板变得流畅,可以说,到目前为止,4..._linux内核移植
文章浏览阅读5.7k次,点赞3次,收藏13次。在 Oracle 数据库中,表空间是存储数据的逻辑容器。有时候,我们可能需要删除不再使用的表空间以释放空间或进行数据库重组。本文将详细介绍在 Oracle 数据库中删除表空间的步骤和示例代码。通过本文,你已经了解了在 Oracle 数据库中删除表空间的详细步骤和示例代码。删除表空间是一个敏感且重要的操作,请在进行操作前充分备份和测试,以确保数据的安全和稳定。希望本文对你在 Oracle 数据库管理中的工作有所帮助。如果你有任何问题或疑问,欢迎留言讨论。_删除表空间
文章浏览阅读843次。申请某些较大的结构体数组时,直接使用32可能会因为内存不足报错,此时可以尝试使用外部内存SRAM,使用代码如下struct Radar_data Radar[RA_SPACE] attribute((at(0x68000220))); //雷达数据#define NEXT1ADDR 0x68000220+sizeof(struct Radar_data)*RA_SPACEstruct TIS_area TisArea[TIS_SPACE] attribute((at(N_stm32f 外置内存
文章浏览阅读1.7k次。Redis作为内存数据库,拥有非常高的性能,单个实例的QPS能够达到10W左右。但我们在使用Redis时,经常时不时会出现访问延迟很大的情况,如果你不知道Redis的内部实现原理,在排查..._redis中的servercron如果数值很大延迟是否很大