在sh脚本中编写字符串的时候,发现很多特殊字符都需要使用转移,但是不同字符转移的规则也不相同,五花八门的,因此记录下来,方便后续开发使用
1、在hql中拼接分号,因为分号会默认作为sql分段的标识。
需要使用\073
例如 concat('alter ',tablename,' add column
\073')
2、在hql中拼接单引号,要用两个单引号标识, 测试过也可以使用\'来分隔
例如 concat('drop table ',tablename,' partition=''
',dt,' '' \073')
但是在'' 中,就要使用转移字符
hive -e
'.... concat( ' partition=\' ',dt, ' \'
\073') '
3、split中使用点做分隔符要用\. ,但是当然当split包含在
'' 之中时 需
安装spacy包:
pip install
-U spacy
如果解析的是英文:
python -m spacy download en
但是安装会报错 time-out
采用手动安装 :
安装:
pip install
path/en_core_web_lg-1.2.0.tar.gz
link:
python -m
spacy link en_core_web_lg en_default
使用:
需要自动化实现删除表操作,所以通过hive拼出sql语句后,输出到文件中,然后执行
#!/bin/bash
Vdatabase=$1
dt=$(date +'%Y-%m-%d' -d '-1day')
renameDT=$(date +'%Y%m%d' -d '-1day')
deleteDT=$(date +'%Y-%m-%d' -d '-8day')
echo $dt
echo $renameDT
echo $Vdatabase
echo $deleteDT
dirv=$(pwd)
echo $dirv
hive -e '
use dmx_bc;
select concat('use ',dbname,'\073 alter table
',tbl_name,' rename to ',
tbl_name,'_$renameDT','_atb\073')
from table where dt='$dt' group by
dbname,tbl_name ; ' > rename.hql
# > 表示每次覆盖这个文件; >>表示在文件中追加新的内容,用\073替代空格
hive -f rename.hql
备注:
这里使用\073
distribute by :用来控制map输出结果的分发,即map端如何拆分数据给reduce端。 会根据distribute
by
后边定义的列,根据reduce的个数进行数据分发,默认是采用hash算法。
select *
from mytest distrubute by word sort by word;
这里distrubute by
后边跟的是word,会有数据倾斜的风险
当 distribute by 后边跟的列是:rand()时,即保证每个分区的数据量基本一致
https://blog.csdn.net/lzw2016/article/details/97818080
1. order by
Hive中的order by跟传统的sql语言中的order
by作用是一样的,会对查询的结果做一次全局排序,所以说,只有hive的sql中制定了order
by所有的数据都会到同一个reducer进行处理(不管有多少map,也不管文件有多少的block只会启动一个reducer)。但是对于大量数据这将会消耗很长的时间去执行。
这里跟传统的sql还有一点区别:如果指定了hive.mapred.mode=strict(默认值是nonstrict),这时就必须指定limit来限制输出条数,原因是:所有的数据都会在同一个reducer端进行,数据量大的情况下可能不能出结果,那么在这样的严格模式下,必须指定输出的条数。
2. sort by
Hive中指定了sort
by,那么在每个reducer端都会做排序,也就是说保证了局部有序(每个reducer出来的数据是有序的,但是不能保证所有的数据是有序的,除非只有一个reducer),好处是:执行了局部排序之后可以为接下去的全局排序提高不少的效率(其实就是做一次归并排序就可以做到全局排序了)。
3. distribute by和sort by一起使用
ditribute by是
整了一整天,发现原来是自己积累的linux知识实在是太少了,现在总结以下安装步骤:
1、第一步下载和服务器版本一致的ODBC驱动
下载的是 :ClouderaImpalaODBC-2.5.26.1027-1.el6.x86_64.rpm
2、上传到服务器,并安装:
2.1)验证unixODBC是否安装
rpm -qa|grep unixODBC
如果没有安装执行以下命令:
一大早起来一大批告警程序空袭了邮箱。
使用plsql连接数据库服务器报错:
ORA-01034:
ORACLE not available ORA-27102: out of memory
解决办法和思路:
1、首先检查linux服务器的当前内存使用情况:
free -m
发现已经没有空闲内存
2、查看内核允许的最大共享内存段大小
/proc/sys/kernel/shmmax
1、先将excel文件另存为csv格式。
2、使用plsql的tools--》text importer