加载中…
  
博文
分类: 数据分析
在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包含在 '' 之中时 需
分类: Python
安装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
分类: 大数据hadoop


原始数据:

sys_region(id,name)

 

分类: 大数据hadoop
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
如果没有安装执行以下命令:
分类: oracle

一大早起来一大批告警程序空袭了邮箱。

 

使用plsql连接数据库服务器报错:

ORA-01034: ORACLE not available ORA-27102: out of memory

 

解决办法和思路:

1、首先检查linux服务器的当前内存使用情况:

free -m    

发现已经没有空闲内存

2、查看内核允许的最大共享内存段大小

/proc/sys/kernel/shmmax 

 

分类: oracle
DB_FILES 定义了oracle数据中数据文件的个数,当数据文件个数超过这个参数设定的值就会报ORA-00059这个错误。

解决办法:
show parameter db_files;   --查看当前设置的值
sqlplus / as sysdba
alter system set db_files=更大的值 scope=spfile;
shutdown immediate;
startup;

说明:
这个参数设置的值的大小不会影响效率,只是单纯的控制数据文件的个数
分类: sql
1、先将excel文件另存为csv格式。
2、使用plsql的tools--》text importer
3、点击导入数据源,即将刚导出的csv文件导入,如图,字段数据会自动映射出来,不用做操作。
http://s6/mw690/002j5aIUzy6NwJRmOz3c5&690


4、选择date to oracle 页,配置要导入的oracle表,并映射对应的字段

http://s10/mw690/002j5aIUzy6NwJSylnz39&690


5、映射好以后,点击import即可:

  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有