1.hive的主要特性:
spark不支持hive的桶(bucket)
2.深奥的hive特性
(1)不支持union数据类型(注意:是数据类型,不是sql语法中的union)
(2)不支持unique join
(3)不支持列统计信息收集
3.Hive Input/Output Formats
不支持hadoop文件归档(hadoop archive)
4.Hive的优化特性
(1)不支持hive的索引
(2)对于join和group by操作,不能自动的决定reduce的数量。可以通过设置SET spark.sql.shuffle.partitions=[num_tasks]来设置shuffle的并行度(对于spark-sql来说,默认是shuffle并行度是200,对于其他spark程序来说,默认是占有的executor的cpu的数量)
(3)查询元数据信息必须启动executor,而不像hive那样不需要启动计算资源
(4)不支持hive的数据倾斜(Skew data flag)标志
(5)不支持hive的STREAMTABLE join的标志
(6)对于查询结果不支持小文件合并
5.经过测试发现,spark不支持 insert overwrite/into directory 语法。
1.hive的主要特性: spark不支持hive的桶(bucket)2.深奥的hive特性 (1)不支持union数据类型(注意:是数据类型,不是sql语法中的union) (2)不支持unique join (3)不支持列统计信息收集3.Hive Input/Output Formats 不支持hadoop文件归档(hadoop ar
Quick
sql
是
SQL
查询产品,可用于特定的数据存储查询或多个数据存储相关查询。 它支持关系数据库,非关系数据库,甚至不支持
SQL
的数据存储(例如Elasticsearch,Druid)。 另外,
SQL
查询可以联接或合并Quick
sql
中多个数据存储中的数据。 例如,您可以在一种
情况
下执行统一
SQL
查询,其中一部分数据存储在Elasticsearch上,而另一部分数据存储在
Hive
上。 最重要的是,Q
SQL
不依赖于任何中间计算引擎,用户只需要关注数据和统一
SQL
语法
即可完成统计和分析。
架构图可帮助您更轻松地访问Quick
sql
。
Q
SQL
体系结构包括三层:
解析层:用于解析,验证,优化
SQL
语句,拆分混合
SQL
并最终生成查询计划;
计算层:用于将查询计划路由到特定执行计划,然后解释为给定存储或引擎的可执行代码(例如Elasticsearch JSON查询或
Hive
HQL);
存储层:用于准备数据提取和存储;
在大多数
情况
下,我们希望使用一种语言进行数据分析,并且不想考虑与数据分析无关的事物,Quick
sql
就是为此而生的。
Quick
sql
的目标是
错误一:Unable to locate
hive
jars to connect to metastore. Please set
spark
.
sql
.
hive
.metastore.jars.
解决方案:将JDK11切换为JDK8,问题解决。JDK11和
Spark
/
Hive
应该存在版本兼容性问题
错误二:连接成功后只显示一个default数据库
解决方案:把
HIVE
_HOME/conf目录下的
hive
-site.xml文件拷贝到本地IDEA的maven项目的resources目录下
关于在zepelin中使用
spark
sql
连接
hive
,只能查询到default数据库,由于我的
spark
已经整合好了
hive
,最后找到其原因,发现是有一个
spark
集群的节点,没有配好
hive
,将
hive
的
hive
-site.xml文件放到此节点的conf目录下,将jdbc的连接驱动放到此节点的jars目录下,重启zepelin,测试
hive
连接,发现可以查询到
hive
数据中的内容。
关于
spark
整合
hive
可以参考我的上篇博文:
https://blog.csdn.net/lucklydog123/a
文章目录Compatibility with Apache
Hive
Deploying in Existing
Hive
WarehousesSupported
Hive
FeaturesUnsupported
Hive
FunctionalityIncompatible
Hive
UDF
Compatibility with Apache
Hive
Spark
SQL
旨在与
Hive
Metastore、SerDes 和 UDF 兼容。 目前
Hive
SerDes 和 UDF 基于
Hive
1.2.
<scala.version>2.11.8</scala.version>
<
spark
.version>2.2.0</
spark
.version>
<scala.compat.version>2.11</scala.compat.version>
import org.apache.
spark
.
sql
.functions._
val windowSpec = Window.partitionBy($"site_id",$"pxSessionId").orderBy($"timeMs").rowsBetween(Long.MinValue,Long.MaxValue)
res.withColumn("pageVie..
将$
HIVE
_HOME/lib下的
spark
-
hive
_2.11-2.4.2.jar与
spark
-
hive
-thriftserver_2.11-2.4.2.jar添加到project中
最近使用
spark
兼容
hive
进行开发,所以静下心来简易的看了一遍。个人感觉有关与技术学习去官网是最正确的选择。所以我从官方网站入手开始将,其他详细内容我不做过多介绍,这里直接开门见山。
官方网站有如下两点很重要:
Spark
SQL
also supports reading and writing
data stored in Apache
Hive
. However, since
Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.
hive
.ql.exec.Utilities.clearWorkMap()V
at org.apache.
spark
.
sql
.
hive
.client.ClientWrapper.<init>(ClientWrapper.scala:204)
at org.apache.
spark
.
sql
.
hive
.client.IsolatedClientLoader.createClient(IsolatedClientLoader.scala:271)
at org.apache.
spark
.
sql
.
hive
.
Hive
Utils$.newClientForMetadata(
Hive
Utils.scala:362)
at org.apache.
spark
.
sql
.
hive
.
Hive
Utils$.newClientForMetadata(
Hive
Utils.scala:266)
at org.apache.
spark
.
sql
.
hive
.
Hive
SharedState.metadata
Hive
$lzycompute(
Hive
SharedState.scala:39)
at org.apache.
spark
.
sql
.
hive
.
Hive
SharedState.metadata
Hive
(
Hive
SharedState.scala:38)
at org.apache.
spark
.
sql
.
hive
.
Hive
SharedState.externalCatalog$lzycompute(
Hive
SharedState.scala:46)
at org.apache.
spark
.
sql
.
hive
.
Hive
SharedState.externalCatalog(
Hive
SharedState.scala:45)
at org.apache.
spark
.
sql
.
hive
.
Hive
SessionState.catalog$lzycompute(
Hive
SessionState.scala:50)
at org.apache.
spark
.
sql
.
hive
.
Hive
SessionState.catalog(
Hive
SessionState.scala:48)
at org.apache.
spark
.
sql
.
hive
.
Hive
SessionState$$anon$1.<init>(
Hive
SessionState.scala:63)
at org.apache.
spark
.
sql
.
hive
.
Hive
SessionState.analyzer$lzycompute(
Hive
SessionState.scala:63)
at org.apache.
spark
.
sql
.
hive
.
Hive
SessionState.analyzer(
Hive
SessionState.scala:62)
at org.apache.
spark
.
sql
.execution.QueryExecution.assertAnalyzed(QueryExecution.scala:49)
at org.apache.
spark
.
sql
.Dataset$.ofRows(Dataset.scala:64)
at org.apache.
spark
.
sql
.
Spark
Session.
sql
(
Spark
Session.scala:582)
解决方法:
该问题是由于
Hive
版本与
Spark
版本
不兼容
导致的。解决方法如下:
1. 确认
Hive
版本与
Spark
版本是否兼容,可以在
Spark
官网查看版本兼容性。
2. 如果版本
不兼容
,可以升级或降级
Hive
版本,或者升级或降级
Spark
版本。
3. 如果版本兼容,可以尝试重新启动
Spark
和
Hive
服务,或者重新编译
Spark
和
Hive
。
4. 如果以上方法都无法解决问题,可以尝试使用其他的
SQL
操作
Hive
的工具,如Beeline等。
总之,要保证
Spark
和
Hive
版本兼容,并且正确配置
Spark
和
Hive
的环境,才能避免出现该问题。
hive报错java.io.IOException: Could not find status of job:job_1470047186803_131111
daydayup-2016
hive报错java.io.IOException: Could not find status of job:job_1470047186803_131111
daydayup-2016
hive on tez安装