熟悉Spark编程的朋友们应该知道,Spark中有SqlContext与HiveContext,其中SqlContext默认是大小写敏感,如果DataFrame中有字段相同只是大小写不同,在使用字段的时候不会引发歧义;HiveContext提供了更多的Hive预置函数,可以更高效的进行数据开发,但是默认为大小不敏感,也就是说当数据中存在类似
name
和
NAME
两个字段时,这个时候如果编写代码:
logs.select("name")
则会引发HiveContext的异常,因为HiveContext此时不知道该选择
name
还是
NAME
。
此时我们可以使用如下配置,指定HiveContext大小写为敏感的,从而解决这个问题:
hiveSqlContext.sql("set spark.sql.caseSensitive=true")
熟悉Spark编程的朋友们应该知道,Spark中有SqlContext与HiveContext,其中SqlContext默认是大小写敏感,如果DataFrame中有字段相同只是大小写不同,在使用字段的时候不会引发歧义;HiveContext提供了更多的Hive预置函数,可以更高效的进行数据开发,但是默认为大小不敏感,也就是说当数据中存在类似name和NAME两个字段时,这个时候如果编写代码:l...
假设我们数据需要与规则数据进行匹配,在Class
中
定义规则,此时不对它进行序列化。
Class Rules {
val rulesMap = Map(
hadoop
-> 1,
spark
-> 2)
val hostname = InetAddress.getLocalHost.getHostName
println(hostname + @@@@@@@@@@@@@@@@)
如果我们在程序
中
使用map操作使规则和数据进行匹配。
val r = lines.map(word => {
val rules = new Rules
1.Sql
Context
默认
大小写
不
敏感
,如果DataFrame
中
有字段相同,
大小写
不同,在使用字段的时候不会引起歧义。
2.
Hive
Context
提供更多的
Hive
预置函数,可以更高效的进行数据分析,默认
大小写
不
敏感
。
注意:在
spark
2.x
中
没有出现Sql
Context
大小写
敏感
问题
!
sql
Context
.sql("select * from user")...
Hive
SQL
中
,数据类型英文字母
大小写
不
敏感
;
除SQL数据类型外,还支持Java数据类型,比如字符串string ;
复杂数据类型的使用通常需要和分隔符指定语法配合使用;
如果定义的数据类型和文件不一 致,
Hive
会尝试隐式转换,但是不保证成功。
原生数据类型
复合数据类型
Hive
SerDe
在之前,我们知道
Hive
数据是保存在HDFS上的,而
mysql查询默认是不区分
大小写
的 如:
select * from students where name like 'a%'
select * from students where name like 'A%'
效果是一样的。
要让mysql查询区分
大小写
,
set
spark
.sql.caseSensitive=FALSE; 设置不区分
大小写
set
spark
.speculation.interval='500';--检测周期,单位为毫秒
set
spark
.speculation.quantile='0.75';--完成task的百分比时启动推测
set
spark
.speculation.multiplier='1.5'; --比其它的慢多少倍时启动推测
set
spark
.streaming.concurrentJobs='3'; --控制job并发度
hive
语句:
select DENSE_RANK() OVER(PARTITION BY mcc ORDER BY app_id) AS flag
from dm.test_table
where 1=1;
HIVE
的报错信息如下:
FAILED: SemanticException Failed to breaku...
Spark
SQL里面有很多的参数,而且这些参数在
Spark
官网
中
没有明确的解释,可能是太多了吧,可以通过在
spark
-sql
中
使用set -v 命令显示当前
spark
-sql版本支持的参数。
本文讲解最近关于在参与
hive
往
spark
迁移过程
中
遇到的一些参数相关
问题
的调优。
内容分为两部分,第一部分讲遇到异常,从而需要通过设置参数来解决的调优;第二部分讲用于提升性能而进行的调优。
异常调优...
最近整理了一下
spark
SQL内置配。加粗配置项是对
spark
SQL 调优性能影响比较大的项,小伙伴们按需酌情配置。后续会挑出一些通用调优配置,共大家参考。有不正确的地方,欢迎大家在留言区留言讨论。
spark
.sql.optimizer.maxIterations
sql优化器最大迭代次数
spark
.sql.optimizer...
Spark
SQL可以通过
Hive
Context
来操作
Hive
表。
Hive
Context
是
Spark
SQL
中
专门用来操作
Hive
数据的上下文对象,它可以让我们使用
Spark
SQL来查询和操作
Hive
表。
使用
Hive
Context
操作
Hive
表的步骤如下:
1. 创建
Hive
Context
对象
val
hive
Context
= new
Hive
Context
(sc)
2. 使用
Hive
Context
来查询
Hive
表
hive
Context
.sql("SELECT * FROM my_table").show()
3. 使用
Hive
Context
来创建
Hive
表
hive
Context
.sql("CREATE TABLE my_table (id INT, name STRING)").show()
4. 使用
Hive
Context
来插入数据到
Hive
表
hive
Context
.sql("INSERT INTO my_table VALUES (1, 'Alice'), (2, 'Bob')").show()
5. 使用
Hive
Context
来更新
Hive
表
hive
Context
.sql("UPDATE my_table SET name = 'Charlie' WHERE id = 1").show()
6. 使用
Hive
Context
来删除
Hive
表
hive
Context
.sql("DROP TABLE my_table").show()
需要注意的是,在使用
Hive
Context
操作
Hive
表时,需要先将
Hive
的配置文件
hive
-site.xml放到
Spark
的conf目录下,以便让
Spark
能够连接到
Hive
。