Bill – 热爱生活,热爱技术的大彪

http://www.billstudy.com

趁着年轻,多做一些老了会惊叹的事!

Sun, 10 Jul 2016 07:05:15 +0000

zh-CN

hourly

1

Home

ELK:Kibana使用分析介绍

http://www.billstudy.com/2016/06/29/d3624b6c5bbc5e55a9c2e4e87f82a451/

http://www.billstudy.com/2016/06/29/d3624b6c5bbc5e55a9c2e4e87f82a451/#respond

Wed, 29 Jun 2016 05:51:56 +0000

http://www.billstudy.com/?p=708

应团队ELK使用需要,特写了一篇Kibana

以下演示基于官方Kibana演示页面:

1.Discover页面

这个面板主要提供了给用户基于记录做快速检索,查询框中输入的查询表达式为luence的query syntax. 在本文后面会分享一些常用的luence语法使用

1.2

在日志量比较大的时候,我们查看日志时一般会自己手动点击刷新来查看最新的数据。 那么能不能偷下懒,让Kibana来帮我们完成这个动作,也就是自动刷新呢? 当前可以,请看下面:

可视化页面可以基于查询条件组合生成很多类型的图表,例如:区域图、数据表、折线图、拼图、竖向图和能基于IP在地图展示的拼贴图等待,如下图所示:

2.1 饼图演示(基于访问IP分析)

下面基于访问IP,统计了在15分钟内访问TOP 50的客户端分布。其他的图表可以自己尝试去玩玩看,都大同小异。

3.Dashboard页面

这个页面上可以将多个已保存的图表创建为一个Dashboard,用作大屏展示。还提供了ifame的方式能将指定Dashboard嵌入到其他你想显示的页面里面。

多个图表支持鼠标拖动位置,同时还能选定指定区间数据进行细化查看。都是挺好用的功能。

下面我们来从官方提供的Dashboard挑选两个看看,对其他的感兴趣的可以自行去: 查看。

3.1 HTTP

这里显示总请求数、HTTP code分布数、按照时间序列柱状图展示、HTTP error分布、TOP N 请求等常用图表展示,如下图:

3.2 MySQL performance

提供了查询错误分布、CRUD以及ROLLBACK分布、MySQL读写、慢查询SQL语句、TOP N 语句等常用图表。

1.全文检索

2.字段查询

server:”app.server2″

整形查询

其他的类似,只不过特殊字符需要转义。

限定字段全文搜索

例如只在path中检索console存在的记录,取消双引号就好了。

bytes_out:[100 TO 200],可以用*代表无边界。

3.2 查询时间区间

2016-06-30T09:20:41.943之后的数据,可以用:–>@timestamp:{2016-06-30T09:20:41.943Z TO *} , 上面是09:20:41事实上是17:20:41,8个小时差。

可用用AND和OR来做逻辑与、逻辑或,和RDBMS查询意思一样。

5.逻辑操作

condition1 AND condition2 OR condition3

比如:

age:20 AND address:”beijing” OR address:”shanghai”

6.存在/不存在

7.特殊转义字符

8.模糊搜索

9.近似搜索

在短语后面加上~

“select where”~3 表示 select 和 where 中间隔着3个单词以内

拓展阅读:

0.《Elasticsearch 权威指南(中文版)》

参考资料:

0.《ELK:kibana使用的lucene查询语法》

1.《ELK kibana查询与过滤(17th)》

2.《Kibana示例》

]]>

http://www.billstudy.com/2016/06/29/d3624b6c5bbc5e55a9c2e4e87f82a451/feed/

0

Log4j从异常堆栈中获取类、方法、行数演示

http://www.billstudy.com/2016/04/16/392cadab078b505416071c2211400589/

http://www.billstudy.com/2016/04/16/392cadab078b505416071c2211400589/#comments

Fri, 15 Apr 2016 10:28:38 +0000

http://www.billstudy.com/?p=692

好奇Log4j格式化日志时,上述信息获取方式。 跟踪代码,发现了其利用异常实现的,下面是简单例子:

输出:

]]>

http://www.billstudy.com/2016/04/16/392cadab078b505416071c2211400589/feed/

1

测试服务器- Zookeeper安装手记

http://www.billstudy.com/2016/02/03/b19dbbfc8142f8e415d8fb034b3dad34/

http://www.billstudy.com/2016/02/03/b19dbbfc8142f8e415d8fb034b3dad34/#respond

Wed, 03 Feb 2016 02:44:36 +0000

http://www.billstudy.com/?p=670

1.解压zookeeper-3.4.6.tar.gz到重命名到/opt/bigdata/zookeeper下

2.创建文件夹

3.进入到conf中复制并修改zoo.cfg文件

4.添加zk节点的myid,在data文件夹中

5.分发整个文件夹到别的节点

6.执行zkServer.sh start然后在status看状态就好了。

批量scp脚本:

]]>

http://www.billstudy.com/2016/02/03/b19dbbfc8142f8e415d8fb034b3dad34/feed/

0

UNIX 读书笔记01

http://www.billstudy.com/2016/01/24/77868cae43a6478f8bedf652c29c8673/

http://www.billstudy.com/2016/01/24/77868cae43a6478f8bedf652c29c8673/#respond

Sun, 24 Jan 2016 04:25:55 +0000

http://www.billstudy.com/?p=663

标准输出流默认不能随着管道流下,可以使用如下脚本:

ls n* 2> errors

2> 代表标准错误流的处理方式跟随标准输出流保持一致

vim:

1,$s/^/爱/  给从第一行开始每行行头加上”爱“

15,$s/$/爱  给从第15行开始”

ls -alh | cut -c1-20

ls -alh | cut -c21-

cut -d: -f6 passwd

cut -d: -f1-6 passwd

cut -d: -f1-6 passwd

cut -d: -f1,6 passwd

sed:

sed ‘s/z/*/’ file 将file每行第一个z替换成*

sed ‘s/z/*/g’ file

sed -n ‘1,4p’ shadow 只显示1~4行

sed -n ‘/ad/p’ shadow 包括ad的行显示出来

sed ‘1,2d’ names  删除文件中的1~2行

sed ‘/z/d’ names 将包含z的行全部删除

sed ‘2a love’ 在第二行后面追加love

sed ‘2i love’

tr:

tr : ^ < shadow 将所有:字符替换成<字符 tr ‘[a-z]’ ‘[A-Z]’ <  passwd  将所有小写字符替换成大写字符 tr ‘:’ ‘\11’ < passwd   将所有冒号替换成制表符 已经存储于:h[0][0]c[0][0] grep: grep -vn ‘z’ names 显示不包含z的行,并且显示行号 grep -l ‘in’ *.log  在所有的log文件中查找in,只显示文件名 sort: sort -u names 排序并且去重复 sort -r names 颠倒顺序(倒序) sort  names -o names 将排序后的结果重新写入源文件,此处不能用重定向操作符.重定向会破坏源文件,导致操作失败 sort -n num 按照算术排序(数字排序) ls -l | sort -k 5 -n 按照第五列进行算术排序(文件大小排序) uniq: sort  num|uniq 将num中重复行删除(使用sort的原因是将num中的重复行排序成连续行) sort num|uniq -d 将重复行显示出来 sort num | uniq -c 去重并显示重复次数,该命令带与不带-c选项区别就在于是否会显示重复次数 awk: cat /etc/passwd | awk -F ‘:’ ‘{print $0}’  用;分割,打印整行 awk -F ‘:’ ‘{print $1}’ /etc/passwd 用;分割,打印第一列 awk -F ‘:’ ‘BEGIN {print “print file begin”} {print $1} END {print “print file end”}’  /etc/passwd  用;分割,打印第一列,并且在最前最后加上消息 ]]>

http://www.billstudy.com/2016/01/24/77868cae43a6478f8bedf652c29c8673/feed/

0

CentOS6.4配置163的yum源

http://www.billstudy.com/2016/01/24/017372e566a0e34b1a1301422e1bb358/

http://www.billstudy.com/2016/01/24/017372e566a0e34b1a1301422e1bb358/#respond

Sun, 24 Jan 2016 04:23:44 +0000

http://www.billstudy.com/?p=654

1.下载repo文件

2.备份并替换系统的repo文件

3.执行yum源更新

来源: <>

]]>

http://www.billstudy.com/2016/01/24/017372e566a0e34b1a1301422e1bb358/feed/

0

vim使用大法

http://www.billstudy.com/2016/01/24/40fb2e24bb1213cbe8f111aec37f5072/

http://www.billstudy.com/2016/01/24/40fb2e24bb1213cbe8f111aec37f5072/#respond

Sun, 24 Jan 2016 04:23:04 +0000

http://www.billstudy.com/?p=652

转自:http://www.lupaworld.com/?uid-296380-action-viewspace-itemid-118973

vi/vim 基本使用方法本文介绍了vi (vim)的基本使用方法,但对于普通用户来说基本上够了!i/vim的区别简单点来说,它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅兼容vi的所有指令,而且还有一些新的特性在里面。例如语法加亮,可视化操作不仅可以在终端运行,也可以运行于x window、 mac os、 windows。vi编辑器是所有Unix及Linux系统下标准的编辑器,它的强大不逊色于任何最新的文本编辑器,这里只是简单地介绍一下它的用法和一小部分指令。由于对Unix及 Linux系统的任何版本,vi编辑器是完全相同的,因此您可以在其他任何介绍vi的地方进一步了解它。Vi也是Linux中最基本的文本编辑器,学会它后,您将在Linux的世界里畅行无阻。

1、vi的基本概念基本上vi可以分为三种状态,分别是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的功能区分如下:1) 命令行模式command mode)控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入Insert mode下,或者到 last line mode。2) 插入模式(Insert mode)只有在Insert mode下,才可以做文字输入,按「ESC」键可回到命令行模式。3) 底行模式(last line mode)将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号……等。不过一般我们在使用时把vi简化成两个模式,就是将底行模式(last line mode)也算入命令行模式command mode)。2、vi的基本操作a) 进入vi在系统提示符号输入vi及文件名称后,就进入vi全屏幕编辑画面:$ vi myfile。不过有一点要特别注意,就是您进入vi之后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字。初次使用vi的人都会想先用上下左右键移动光标,结果电脑一直哔哔叫,把自己气个半死,所以进入vi后,先不要乱动,转换到「插入模式(Insert mode)」再说吧!b) 切换至插入模式(Insert mode)编辑文件在「命令行模式(command mode)」下按一下字母「i」就可以进入「插入模式(Insert mode)」,这时候你就可以开始输入文字了。c) Insert 的切换您目前处于「插入模式(Insert mode)」,您就只能一直输入文字,如果您发现输错了字!想用光标键往回移动,将该字删除,就要先按一下「ESC」键转到「命令行模式(command mode)」再删除文字。d) 退出vi及保存文件在「命令行模式(command mode)」下,按一下「:」冒号键进入「Last line mode」,例如:: w filename (输入 「w filename」将文章以指定的文件名filename保存): wq (输入「wq」,存盘并退出vi): q! (输入q!, 不存盘强制退出vi)3、命令行模式(command mode)功能键1). 插入模式按「i」切换进入插入模式「insert mode」,按“i”进入插入模式后是从光标当前位置开始输入文件;按「a」进入插入模式后,是从目前光标所在位置的下一个位置开始输入文字;按「o」进入插入模式后,是插入新的一行,从行首开始输入文字。2). 从插入模式切换为命令行模式按「ESC」键。3). 移动光标vi可以直接用键盘上的光标来上下左右移动,但正规的vi是用小写英文字母「h」、「j」、「k」、「l」,分别控制光标左、下、上、右移一格。按「ctrl」+「b」:屏幕往“后”移动一页。按「ctrl」+「f」:屏幕往“前”移动一页。按「ctrl」+「u」:屏幕往“后”移动半页。按「ctrl」+「d」:屏幕往“前”移动半页。按数字「0」:移到文章的开头。按「G」:移动到文章的最后。按「$」:移动到光标所在行的“行尾”。按「^」:移动到光标所在行的“行首”按「w」:光标跳到下个字的开头按「e」:光标跳到下个字的字尾按「b」:光标回到上个字的开头按「#l」:光标移到该行的第#个位置,如:5l,56l。4). 删除文字「x」:每按一次,删除光标所在位置的“后面”一个字符。「#x」:例如,「6x」表示删除光标所在位置的“后面”6个字符。「X」:大写的X,每按一次,删除光标所在位置的“前面”一个字符。「#X」:例如,「20X」表示删除光标所在位置的“前面”20个字符。「dd」:删除光标所在行。「#dd」:从光标所在行开始删除#行5). 复制「yw」:将光标所在之处到字尾的字符复制到缓冲区中。「#yw」:复制#个字到缓冲区「yy」:复制光标所在行到缓冲区。「#yy」:例如,「6yy」表示拷贝从光标所在的该行“往下数”6行文字。「p」:将缓冲区内的字符贴到光标所在位置。注意:所有与“y”有关的复制命令都必须与“p”配合才能完成复制与粘贴功能。6). 替换「r」:替换光标所在处的字符。「R」:替换光标所到之处的字符,直到按下「ESC」键为止。7). 回复上一次操作「u」:如果您误执行一个命令,可以马上按下「u」,回到上一个操作。按多次“u”可以执行多次回复。8). 更改「cw」:更改光标所在处的字到字尾处「c#w」:例如,「c3w」表示更改3个字9). 跳至指定的行「ctrl」+「g」列出光标所在行的行号。「#G」:例如,「15G」,表示移动光标至文章的第15行行首。4、Last line mode下命令简介  在使用「last line mode」之前,请记住先按「ESC」键确定您已经处于「command mode」下后,再按「:」冒号即可进入「last line mode」。A) 列出行号「set nu」:输入「set nu」后,会在文件中的每一行前面列出行号。B) 跳到文件中的某一行「#」:「#」号表示一个数字,在冒号后输入一个数字,再按回车键就会跳到该行了,如输入数字15,再回车,就会跳到文章的第15行。C) 查找字符「/关键字」:先按「/」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往后寻找到您要的关键字为止。「?关键字」:先按「?」键,再输入您想寻找的字符,如果第一次找的关键字不是您想要的,可以一直按「n」会往前寻找到您要的关键字为止。D) 保存文件「w」:在冒号输入字母「w」就可以将文件保存起来。E) 离开vi「q」:按「q」就是退出,如果无法离开vi,可以在「q」后跟一个「!」强制离开vi。「qw」:一般建议离开时,搭配「w」一起使用,这样在退出的时候还可以保存文件。5、vi命令列表1) 下表列出命令模式下的一些键的功能:h左移光标一个字符l右移光标一个字符k光标上移一行j光标下移一行^光标移动至行首0数字“0”,光标移至文章的开头G光标移至文章的最后$光标移动至行尾Ctrl+f向前翻屏Ctrl+b向后翻屏Ctrl+d向前翻半屏Ctrl+u向后翻半屏i在光标位置前插入字符a在光标所在位置的后一个字符开始增加o插入新的一行,从行首开始输入ESC从输入状态退至命令状态x删除光标后面的字符#x删除光标后的#个字符X(大写X),删除光标前面的字符#X删除光标前面的#个字符dd删除光标所在的行#dd删除从光标所在行数的#行yw复制光标所在位置的一个字#yw复制光标所在位置的#个字yy复制光标所在位置的一行#yy复制从光标所在行数的#行p粘贴u取消操作cw更改光标所在位置的一个字#cw更改光标所在位置的#个字2) 下表列出行命令模式下的一些指令w filename储存正在编辑的文件为filenamewq filename储存正在编辑的文件为filename,并退出viq!放弃所有修改,退出viset nu显示行号/或?查找,在/后输入要查找的内容n与/或?一起使用,如果查找的内容不是想要找的关键字,按n或向后(与/联用)或向前(与?联用)继续查找,直到找到为止。高手总结的图:

完!

来源: <>

]]>

http://www.billstudy.com/2016/01/24/40fb2e24bb1213cbe8f111aec37f5072/feed/

0

sqoop 和mysql相关操作

http://www.billstudy.com/2016/01/24/15d715f48bea80822589519882be4c33/

http://www.billstudy.com/2016/01/24/15d715f48bea80822589519882be4c33/#respond

Sun, 24 Jan 2016 04:21:28 +0000

http://www.billstudy.com/?p=649

数据迁移工具,可以和RDBMS相互迁移数据

需要先将db driver copy to sqoop lib dir

注意:

sqoop是以mapreduce的方式来运行任务的,用hdfs来存储数据的。所以依赖NameNode和ResourceManager,只要机器上配置了这两个就可以正常运行,程序运行时会自动读取环境变量.

// 导出car数据库中的carinfo表到hdfs的user里面

sqoop import –connect jdbc:mysql://192.168.32.1:3306/car –username root –password bill –table carinfo

// 导出到/sqoop/file(hdfs上)

–target-dir /sqoop/file

使用2个map任务来跑

-m 2

使用制表符作为分隔符

–fields-terminated-by ‘\t’

只导出id和name列

–columns “id,name”

带上过滤条件

–where ‘id > 2 and id <= 9’ 带上查询语句,加上了query必须要带上这个 –query ‘select * from user where id > 100 and  $CONDTIONS’

// 根据trande_detail.id来分给不同的map,在map多个的时候需要指定

// 单个map不需要加这个选项

–split-by trande_detail.id

导入数据到hbase

sqoop import –connect jdbc:mysql://192.168.32.201:3306/hive_test –table hive_user –hbase-create-table –hbase-table hbase_user –column-family info –hbase-row-key id –username root –password bill;

sqoop import –connect jdbc:mysql://192.168.32.1:3306/car –table t –hbase-create-table –hbase-table cars –column-family info –hbase-row-key id –username root –password bill;

导入数据到hive

sqoop import –connect jdbc:mysql://192.168.32.201:3306/hive_test –hive-import –hive-overwrite –hive-table hive_user –fields-terminated-by ‘\t’ –table hive_user –username root –password bill;

sqoop import –connect jdbc:mysql://192.168.32.1:3306/car –table t –hive-import –hive-overwrite –hive-table cars –username root –password bill –fields-terminated-by ‘\t’;

案例:

sqoop import –connect jdbc:mysql://192.168.32.1:3306/h1 –username root –password bill –target-dir /sqoop/table/radiotype/all/ –fields-terminated-by ‘\t’ –table radiotype

sqoop import –connect jdbc:mysql://192.168.32.1:3306/h1 –where ‘id >= 3 and id <= 5’ –target-dir /sqoop/table/radiotype/id3-5_03/ –fields-terminated-by ‘\t’ -m 2 –table radiotype –username root –password bill sqoop import –connect jdbc:mysql://192.168.32.1:3306/h1 –table radiotype –target-dir /sqoop/table/radiotype/assign-columns/ –columns ‘id,typename,imageurl’ –fields-terminated-by ‘^’ -m 4 –username root –password bill sqoop import –connect jdbc:mysql://192.168.32.1:3306/h1  –target-dir /sqoop/table/radiotype/custom_sql/ –username root –password bill –fields-terminated-by ‘标’ –query ‘select * from radiotype where id > 1 and $CONDITIONS‘ -m 1

sqoop import –connect jdbc:mysql://192.168.32.1/h1 –username root –password bill –query ‘select * from radiotype where id != 3 and $CONDITIONS’ –target-dir /sqoop/table/radiotype/custom_sql_02 –fields-terminated-by ‘^’  -m 4 –split-by radiotype.id

sqoop export –connect jdbc:mysql://192.168.32.1/h1 –table radiotype_export –export-dir /sqoop/table/radiotype/custom_sql/ –username root –password bill –fields-terminated-by ‘标’

]]>

http://www.billstudy.com/2016/01/24/15d715f48bea80822589519882be4c33/feed/

0

hbase 概念 + 搭建分布式HA应用

http://www.billstudy.com/2016/01/24/6ccb01cb7831473a45fa2b2d28c1d8a9/

http://www.billstudy.com/2016/01/24/6ccb01cb7831473a45fa2b2d28c1d8a9/#respond

Sun, 24 Jan 2016 04:20:30 +0000

http://www.billstudy.com/?p=646

HBase – Hadoop Database

hbase的设计思想来自于google的bigtable

主键:Row Key

主键是用来检索记录的主键,访问Hbase table 中的行,只有三种方式

列族:Column Family

列族在创建表的时候声明,一个列族可以包含多个列,列中的数据都是以二进制形式存在,没有数据类型

时间戳:Timestamp

角色功能:

Client

Zookeeper

Master

Region Server

相比RDBMS特性:

线性扩展和对于新节点的自动处理:增加一个节点,把它指向现有集群并运行regionserver. region自动重新进行平衡,负载均匀分布

普通商用硬件支持:集群可以用较低价格的机器来搭建节点(相对RDBMS),RDBMS需要支持大量IO,所以要求更昂贵的硬件.

容错:大量节点意味着每个节点的重要性并不突出,不用担心单个节点失效

批处理:MapReduce集成功能使我们可以用全并行分布式作业根据“数据的位置”(Location Awareness)来处理它们。

Memstore与storefile

Hbase里面有两张特殊的表:

.meta.:记录了用户创建的表Region信息,可以有多个region

-root-:记录了meta的位置

目前集群情况:

DFSZKFailoverController(zkfc):用作监控NameNode节点,定时向Zookeeper汇报健康情况,所以只有1,2有

JournalNode:共享NameNode的edits数据,也是5,6,7有

待会hbase要实现的目标:

//告诉hbase使用外部的zk

export HBASE_MANAGES_ZK=false

vim hbase-site.xml

hbase.rootdir

hdfs://ns1/hbase

hbase.cluster.distributed

true

hbase.zookeeper.quorum

hadoop-server05:2181,hadoop-server06:2181,hadoop-server07:2181

vim regionservers

hadoop-server07

cd ~/app

scp_hadoop_many hbase/ $PWD

如果没有批量自动化脚本,也可以分别使用scp拷贝。

分别在5,6,7机器上启动Zookeeper

启动Hbase集群 (在1机器上启动)

现在就可以访问机器的60010查看hbase状态了。

可以看到7个节点,并且有2个backup master

访问:60010/zk.jsp 可以查看Zookeeper Dump

附注:

1.脚本 scp_hadoop_many

#!/bin/bash

if [ $# -ne 2 ]

then

echo “usage:

exit 1

fi

ips=(hadoop-server02 hadoop-server03 hadoop-server04 hadoop-server05 hadoop-server06 hadoop-server07)

for ip in ${ips[*]}

do

scp -r $1 hadoop@$ip:$2

done

]]>

http://www.billstudy.com/2016/01/24/6ccb01cb7831473a45fa2b2d28c1d8a9/feed/

0

Hive 测试笔记

http://www.billstudy.com/2016/01/24/30652129c432fb3fdee29cf50c2575bc/

http://www.billstudy.com/2016/01/24/30652129c432fb3fdee29cf50c2575bc/#respond

Sun, 24 Jan 2016 04:19:33 +0000

http://www.billstudy.com/?p=641

load data local inpath ‘/home/hadoop/test-table/s1.txt’ into table student;

2.导入普通表数据

2.1 【 通过hive命令】

load data local inpath ‘/home/hadoop/test-table/s1.txt’ into table student;

2.2 【通过hadoop命令直接上传】

hadoop fs -put /home/hadoop/test-table/s1.txt /user/hive/warehouse/

3.创建外部表

create external table ext_student (id int , name string) row format delimited fields terminated by ‘\t’ location ‘/ext_student’;

4.导入外部表数据

4.1 【 通过hive命令】

load data local inpath ‘/home/hadoop/test-table/s2.txt’ into table ext_student;

4.2 【通过hadoop命令直接上传】

hadoop fs -put s1.txt  /ext_student;

5.创建分区表

create table part_student (id int,name string) partitioned by (address string) row format delimited fields terminated by ‘\t’;

6.导入分区表数据

6.1 【 通过hive命令】

load data local inpath ‘/home/hadoop/test-table/s1.txt’ into table part_student partition (address=’hunan’);

load data local inpath ‘/home/hadoop/test-table/s2.txt’ into table part_student partition (address=’shanghai’);

load data local inpath ‘/home/hadoop/test-table/s3.txt’ into table part_student partition (address=’beijin’);

6.2 【通过hadoop命令直接上传】

hadoop fs -put s4.txt  /user/hive/warehouse/part_student/address=zhongshan

*** 如果表是分区表,通过hadoop命令上传后hive里面会查询不到数据,这个和普通表、外部表不一样。

需要手动添加分区,因为在元数据表中不存在新增加的zhongshan分区,否则不会去读取新分区。

alter table part_student add partition (address=’zhongshan’);

测试Hive Join查询:

1.建立 user , trande表

SET FOREIGN_KEY_CHECKS=0;

— —————————-

— Table structure for `hive_trade`

— —————————-

DROP TABLE IF EXISTS `hive_trade`;

CREATE TABLE `hive_trade` (

`id` int(128) NOT NULL AUTO_INCREMENT,

`email` varchar(128) DEFAULT NULL,

`amount` double(128,0) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

— —————————-

— Records of hive_trade

— —————————-

INSERT INTO `hive_trade` VALUES (‘1’, ‘5938902321@qq.com’, ’20’);

INSERT INTO `hive_trade` VALUES (‘2’, ‘234234@qq.com’, ’32’);

INSERT INTO `hive_trade` VALUES (‘3’, ‘234234@qq.com’, ‘100’);

INSERT INTO `hive_trade` VALUES (‘4’, ‘092903@163@.com’, ‘5’);

INSERT INTO `hive_trade` VALUES (‘5’, ‘092903@163@.com’, ‘100’);

INSERT INTO `hive_trade` VALUES (‘6’, ‘flank@126.com’, ‘324’);

INSERT INTO `hive_trade` VALUES (‘7’, ‘flank@126.com’, ‘13132’);

INSERT INTO `hive_trade` VALUES (‘8’, ‘34324@sina.com’, ‘234553’);

INSERT INTO `hive_trade` VALUES (‘9’, ‘34324@sina.com’, ’33’);

INSERT INTO `hive_trade` VALUES (’10’, ‘34324@sina.com’, ’13’);

INSERT INTO `hive_trade` VALUES (’11’, ‘5938902321@qq.com’, ’12’);

INSERT INTO `hive_trade` VALUES (’12’, ‘5938902321@qq.com’, ‘12313’);

INSERT INTO `hive_trade` VALUES (’13’, ‘flank@126.com’, ’20’);

— —————————-

— Table structure for `hive_user`

— —————————-

DROP TABLE IF EXISTS `hive_user`;

CREATE TABLE `hive_user` (

`id` int(128) NOT NULL AUTO_INCREMENT,

`email` varchar(128) DEFAULT NULL,

`name` varchar(128) DEFAULT NULL,

`address` varchar(128) DEFAULT NULL,

PRIMARY KEY (`id`)

) ENGINE=MyISAM AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

— —————————-

— Records of hive_user

— —————————-

INSERT INTO `hive_user` VALUES (‘1’, ‘5938902321@qq.com’, ‘Bill’, ‘湖南耒阳’);

INSERT INTO `hive_user` VALUES (‘2’, ‘234234@qq.com’, ‘fly’, ‘湖南郴州’);

INSERT INTO `hive_user` VALUES (‘3’, ‘092903@163@.com’, ‘su’, ‘上海’);

INSERT INTO `hive_user` VALUES (‘4’, ‘34324@sina.com’, ‘vence’, ‘北京’);

INSERT INTO `hive_user` VALUES (‘5’, ‘flank@126.com’, ‘flk’, ‘香港’);

2.在mysql中测试查询

select u.email,u.name,u.address,t.amount

from hive_user u join

(select email,sum(amount) amount from hive_trade group by email) t

on u.email = t.email;

3.直接将mysql表导入到hive

3.1 hive_user表

sqoop import –connect jdbc:mysql://192.168.32.201:3306/hive_test –hive-import –hive-overwrite –hive-table hive_user –fields-terminated-by ‘\t’ –table hive_user –username root –password bill;

3.2 hive_trade

sqoop import –connect jdbc:mysql://192.168.32.201:3306/hive_test –hive-import –hive-overwrite –hive-table hive_trade –fields-terminated-by ‘\t’ –table hive_trade –username root –password bill;

4.在hive中执行上面mysql的查询语句

总结:在数据量小的情况下,hive相比mysql太慢了。但是数据量大的话,hive的速度比mysql快!

create table t6(id int,name String,salary float,person array,love map,address struct) row format delimited fields terminated by ‘\t’ collection items terminated by ‘\t’ map keys terminated by ‘\t’ lines terminated by ‘\n’ stored as textfile;

]]>

http://www.billstudy.com/2016/01/24/30652129c432fb3fdee29cf50c2575bc/feed/

0

mysql常用解决方案

http://www.billstudy.com/2016/01/24/0446e95f54fed0b602201df810df994d/

http://www.billstudy.com/2016/01/24/0446e95f54fed0b602201df810df994d/#respond

Sun, 24 Jan 2016 04:18:54 +0000

http://www.billstudy.com/?p=636

1.删除了mysql数据库user表记录,会导致用户不能正常登录。

此时将mysqld 以skip-grant-tables启动,忽略权限。

进入到mysql库中,执行以下脚本。

就可以用root/bill登录了

2.授权

#(执行下面的语句  *.*:所有库下的所有表   %:任何IP地址或主机都可以连接)

GRANT ALL PRIVILEGES ON *.* TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;

FLUSH PRIVILEGES;

mysql导入导出包括函数或者存储过程

1.mysql导出整个数据库

mysqldump -h hostname -u username -p  databasename > backupfile.sql

如果root用户没用密码可以不写-p,当然导出的sql文件你可以制定一个路径,未指定则存放在mysql的bin目录下  www.2cto.com

2.mysql导出数据库一个表

mysqldump -hhostname -uusername -ppassword database  tablename> 导出的文件名

mysqldump -hlocalhost -uroot hqgr t_ug_user> user.sql

3.mysql导出一个数据库结构

mysqldump -hhostname -uusername -ppassword  -d –add-drop-table databasename>d:hqgrstructure.sql

-d 没有数据 –add-drop-table 在每个create语句之前增加一个drop table

4.如果需要导出mysql里面的函数或者存储过程

mysqldump -h  hostname -u  username   -ntd -R   databasename  > backupflie.sql  (包括存过过程和函数一次性完整导出)

其中的 -ntd 是表示导出表结构和数据;-R是表示导出函数、存储过程

可以参照mysqldump –help

mysql常用导入数据的命令:

mysql数据库导入导出:

mysqldump -u 用户名 -p 数据库名 > 数据库名.sql

如:

mysqldump -u root   -p         testdb  > testdb.sql (不包括存储过程和函数)

mysqldump -u root   -p  -R   testdb  > testdb.sql (**包括存储过程和函数**)

MySQL source命令向数据库中导入数据:

mysql>use testdb;

mysql>set names  utf8;

mysql>source /tmp/bdc.sql;

奇怪错误处理:

下面是导出存储过程的代码

1 # mysqldump -u 数据库用户名 -p -n -t -d -R 数据库名 > 文件名

其中,-d 表示–no-create-db, -n表示–no-data, -t表示–no-create-info, -R表示导出function和procedure。所以上述代码表示仅仅导出函数和存储过程,不导出表结构和数据。但是,这样导出的内容里,包含了 trigger。再往mysql中导入时就会出问题,错误如下:

ERROR 1235 (42000) at line **: This version of MySQL doesn’t yet support ‘multiple triggers with the same action time and event for one table’

所以在导出时需要把trigger关闭。代码为

1 # mysqldump -u 数据库用户名 -p -n -t -d -R –triggers=false 数据库名 > 文件名

这样导入时,会出现新的问题:

ErrorCode:1418

This function has none of DETERMINISTIC, NOSQL, or READS SQL DATA inits declaration and binary logging is enabled (you *might* want to use the less safe log_bin_trust_function_creators variable)

解决方法是,在/etc/my.cnf中找到[mysqld],在它下面添加这样一行:

1 log-bin-trust-function-creators=1

创建数据库:CREATE DATABASE `total_admin` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

1.查看mysql大小

use 数据库名  SELECT sum(DATA_LENGTH)+sum(INDEX_LENGTH)  FROM information_schema.TABLES where TABLE_SCHEMA=’数据库名’;

得到的结果是以字节为单位,除1024为K,除1048576为M。

2.查看表的最后mysql修改时间select TABLE_NAME,UPDATE_TIME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA=’数据库名’;

安装好mysql的提示:

]]>

http://www.billstudy.com/2016/01/24/0446e95f54fed0b602201df810df994d/feed/

0

Leave a Reply

Your email address will not be published.