http://www.billstudy.com
趁着年轻,多做一些老了会惊叹的事!
Sun, 10 Jul 2016 07:05:15 +0000
zh-CN
hourly
1
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
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
]]>
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