??xml version="1.0" encoding="utf-8" standalone="yes"?>浙江快乐12开奖结果:BlogJava - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/xzclog/zh-cnSat, 15 Dec 2018 04:45:59 GMTSat, 15 Dec 2018 04:45:59 GMT60Python读写、创建文?/title><link>//www.ot7t.com.cn/xzclog/archive/2018/11/28/433526.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Wed, 28 Nov 2018 03:52:00 GMT</pubDate><guid>//www.ot7t.com.cn/xzclog/archive/2018/11/28/433526.html</guid><wfw:comment>//www.ot7t.com.cn/xzclog/comments/433526.html</wfw:comment><comments>//www.ot7t.com.cn/xzclog/archive/2018/11/28/433526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/xzclog/comments/commentRss/433526.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/xzclog/services/trackbacks/433526.html</trackback:ping><description><![CDATA[ 原文链接://www.cnblogs.com/juandx/p/4962089.html python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块? 得到当前工作目录,即当前Python脚本工作的目录路? os.getcwd() 返回指定目录下的所有文件和目录?os.listdir() 函数用来删除一个文?os.remove() 删除多个目录:os.removedirs(r“c:\python”? 检验给出的路径是否是一个文件:os.path.isfile() 检验给出的路径是否是一个目录:os.path.isdir() 判断是否是绝对路径:os.path.isabs() 检验给出的路径是否真地?os.path.exists() 返回一个路径的目录名和文件?os.path.split() eg os.path.split(‘/home/swaroop/byte/code/poem.txt’) 结果?‘/home/swaroop/byte/code’, ‘poem.txt’) 分离扩展名:os.path.splitext() 获取路径名:os.path.dirname() 获取文件名:os.path.basename() 运行shell命令: os.system() 读取和设置环境变?os.getenv() 与os.putenv() 给出当前平台使用的行终止?os.linesep Windows使用’\r\n’,Linux使用’\n’而Mac使用’\r’ 指示你正在使用的平台:os.name 对于Windows,它?#8217;nt’,而对于Linux/Unix用户,它?#8217;posix’ 重命名:os.rename(old?new? 创建多级目录:os.makedirs(r“c:\python\test”? 创建单个目录:os.mkdir?#8220;test”? 获取文件属性:os.stat(file? 修改文件权限与时间戳:os.chmod(file? 终止当前进程:os.exit() 获取文件大小:os.path.getsize(filename? 文件操作? os.mknod(“test.txt”) 创建空文? fp = open(“test.txt”,w) 直接打开一个文件,如果文件不存在则创建文件 关于open 模式? w 以写方式打开? a 以追加模式打开 (?EOF 开? 必要时创建新文件) r+ 以读写模式打开 w+ 以读写模式打开 (参见 w ) a+ 以读写模式打开 (参见 a ) rb 以二进制读模式打开 wb 以二进制写模式打开 (参见 w ) ab 以二进制追加模式打开 (参见 a ) rb+ 以二进制读写模式打开 (参见 r+ ) wb+ 以二进制读写模式打开 (参见 w+ ) ab+ 以二进制读写模式打开 (参见 a+ ) fp.read([size]) #size为读取的长度,以byte为单? fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分 fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分? fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符 fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写?。这个函数也只是忠实地写入,不会在每行后面加上任何东西? fp.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯?如果一个文件在关闭后还对其进行操作会产生ValueError fp.flush() #把缓冲区的内容写入硬? fp.fileno() #返回一个长整型?#8221;文件标签“ fp.isatty() #文件是否是一个终端设备文件(unix系统中的? fp.tell() #返回文件操作标记的当前位置,以文件的开头为原点 fp.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for … in file这样的语句时,就是调用next()函数来实现遍历的? fp.seek(offset[,whence]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以?表示从头开始计算,1表示以当前位置为原点计算?表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾? fp.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是?把文件补到相应的大小,也可能是以一些随机的内容加上去? 目录操作? os.mkdir(“file”) 创建目录 复制文件? shutil.copyfile(“oldfile”,”newfile”) oldfile和newfile都只能是文件 shutil.copy(“oldfile”,”newfile”) oldfile只能是文件夹,newfile可以是文件,也可以是目标目录 复制文件夹: shutil.copytree(“olddir”,”newdir”) olddir和newdir都只能是目录,且newdir必须不存? 重命名文件(目录? os.rename(“oldname”,”newname”) 文件或目录都是使用这条命? 移动文件(目录) shutil.move(“oldpos”,”newpos”) 删除文件 os.remove(“file”) 删除目录 os.rmdir(“dir”)只能删除空目? shutil.rmtree(“dir”) 空目录、有内容的目录都可以? 转换目录 os.chdir(“path”) 换路? Python读写文件 1.open 使用open打开文件后一定要记得调用文件对象的close()方法。比如可以用try/finally语句来确保最后能关闭文件? file_object = open(‘thefile.txt’) try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句放在try块里,因为当打开文件出现异常时,文件对象file_object无法执行close()方法? 2.读文? 读文本文? input = open('data', 'r') #第二个参数默认为r input = open('data') 1 2 3 读二进制文件 input = open('data', 'rb') 1 读取所有内? file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 1 2 3 4 5 读固定字? file_object = open('abinfile', 'rb') try: while True: chunk = file_object.read(100) if not chunk: break do_something_with(chunk) finally: file_object.close( ) 1 2 3 4 5 6 7 8 9 读每? list_of_all_the_lines = file_object.readlines( ) 1 如果文件是文本文件,还可以直接遍历文件对象获取每行: for line in file_object: process line 1 2 3.写文? 写文本文? output = open('data', 'w') 1 写二进制文件 output = open('data', 'wb') 1 追加写文? output = open('data', 'w+') 1 写数? file_object = open('thefile.txt', 'w') file_object.write(all_the_text) file_object.close( ) 1 2 3 写入多行 file_object.writelines(list_of_text_strings) 1 注意,调用writelines写入多行在性能上会比使用write一次性写入要高? 在处理日志文件的时候,常常会遇到这样的情况:日志文件巨大,不可能一次性把整个文件读入到内存中进行处理,例如需要在一台物理内存为 2GB 的机器上处理一?2GB 的日志文件,我们可能希望每次只处理其?200MB 的内容? ?Python 中,内置?File 对象直接提供了一?readlines(sizehint) 函数来完成这样的事情。以下面的代码为例: file = open('test.log', 'r')sizehint = 209715200 # 200Mposition = 0lines = file.readlines(sizehint)while not file.tell() - position < 0: position = file.tell() lines = file.readlines(sizehint) 1 每次调用 readlines(sizehint) 函数,会返回大约 200MB 的数据,而且所返回的必然都是完整的行数据,大多数情况下,返回的数据的字节数会稍微比 sizehint 指定的值大一点(除最后一次调?readlines(sizehint) 函数的时候)。通常情况下,Python 会自动将用户指定?sizehint 的值调整成内部缓存大小的整数倍? file在python是一个特殊的类型,它用于在python程序中对外部的文件进行操作。在python中一切都是对象,file也不例外,file有file的方法和属性。下面先来看如何创建一个file对象? file(name[, mode[, buffering]]) 1 file()函数用于创建一个file对象,它有一个别名叫open(),可能更形象一些,它们是内置函数。来看看它的参数。它参数都是以字符串的形式传递的。name是文件的名字? mode是打开的模式,可选的值为r w a U,分别代表读(默认) ?添加支持各种换行符的模式。用w或a模式打开文件的话,如果文件不存在,那么就自动创建。此外,用w模式打开一个已经存在的文件时,原有文件的内容会被清空,因为一开始文件的操作的标记是在文件的开头的,这时候进行写操作,无疑会把原有的内容给抹掉。由于历史的原因,换行符在不同的系统中有不同模式,比如在 unix中是一个\n,而在windows中是‘\r\n’,用U模式打开文件,就是支持所有的换行模式,也就说‘\r’ ‘\n’ ‘\r\n’都可表示换行,会有一个tuple用来存贮这个文件中用到过的换行符。不过,虽说换行有多种模式,读到python中统一用\n代替。在模式字符的后面,还可以加? b t这两种标识,分别表示可以对文件同时进行读写操作和用二进制模式、文本模式(默认)打开文件? buffering如果?表示不进行缓?如果?表示进行“行缓?#8220;;如果是一个大?的数表示缓冲区的大小,应该是以字节为单位的? file对象有自己的属性和方法。先来看看file的属性? closed #标记文件是否已经关闭,由close()改写 encoding #文件编码 mode #打开模式 name #文件? newlines #文件中用到的换行模式,是一个tuple softspace #boolean型,一般为0,据说用于print 1 2 3 4 5 6 file的读写方法: F.read([size]) #size为读取的长度,以byte为单? F.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分 F.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分? F.write(str) #把str写到文件中,write()并不会在str后加上一个换行符 F.writelines(seq) #把seq的内容全部写到文件中。这个函数也只是忠实地写入,不会在每行后面加上任何东西? file的其他方法: F.close() #关闭文件。python会在一个文件不用后自动关闭文件,不过这一功能没有保证,最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其进行操作会产生ValueError F.flush() #把缓冲区的内容写入硬? F.fileno() #返回一个长整型?#8221;文件标签“ F.isatty() #文件是否是一个终端设备文件(unix系统中的? F.tell() #返回文件操作标记的当前位置,以文件的开头为原点 F.next() #返回下一行,并将文件操作标记位移到下一行。把一个file用于for ... in file这样的语句时,就是调用next()函数来实现遍历的? F.seek(offset[,whence]) #将文件打操作标记移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以?表示从头开始计算,1表示以当前位置为原点计算?表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾? F.truncate([size]) #把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是?把文件补到相应的大小,也可能是以一些随机的内容加上去? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 //www.cnblogs.com/allenblogs/archive/2010/09/13/1824842.html //www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html<img src ="//www.ot7t.com.cn/xzclog/aggbug/433526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/xzclog/" target="_blank">xzc</a> 2018-11-28 11:52 <a href="//www.ot7t.com.cn/xzclog/archive/2018/11/28/433526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDFS副本设置——默? - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/xzclog/archive/2018/11/26/433518.htmlxzcxzcMon, 26 Nov 2018 03:52:00 GMT//www.ot7t.com.cn/xzclog/archive/2018/11/26/433518.html//www.ot7t.com.cn/xzclog/comments/433518.html//www.ot7t.com.cn/xzclog/archive/2018/11/26/433518.html#Feedback0//www.ot7t.com.cn/xzclog/comments/commentRss/433518.html//www.ot7t.com.cn/xzclog/services/trackbacks/433518.html

xzc 2018-11-26 11:52 发表评论
]]>
当同时安装Python2和Python3后,如何兼容并切换使用详解(比如pip使用?/title><link>//www.ot7t.com.cn/xzclog/archive/2018/11/16/433500.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Fri, 16 Nov 2018 01:38:00 GMT</pubDate><guid>//www.ot7t.com.cn/xzclog/archive/2018/11/16/433500.html</guid><wfw:comment>//www.ot7t.com.cn/xzclog/comments/433500.html</wfw:comment><comments>//www.ot7t.com.cn/xzclog/archive/2018/11/16/433500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/xzclog/comments/commentRss/433500.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/xzclog/services/trackbacks/433500.html</trackback:ping><description><![CDATA[转自:https://www.cnblogs.com/shabbylee/p/6792555.html 由于历史原因,Python有两个大的版本分支,Python2和Python3,又由于一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Python3,因此如何让两个版本的Python兼容,如何让脚本在对应的Python版本上运行,这个是值得总结的? 对于Ubuntu 16.04 LTS版本来说,Python2?.7.12)和Python3?.5.2)默认同时安装,默认的python版本?.7.12? 当然你也可以用python2来调用? 如果想调用python3,就用python3. 对于Windows,就有点复杂了。因为不论python2还是python3,python可执行文件都叫python.exe,在cmd下输入python得到的版本号取决于环境变量里哪个版本的python路径更靠前,毕竟windows是按照顺序查找的。比如环境变量里的顺序是这样的: 那么cmd下的python版本就是2.7.12? 反之,则是python3的版本号? 这就带来一个问题了,如果你想用python2运行一个脚本,一会你又想用python3运行另一个脚本,你怎么做?来回改环境变量显然很麻烦? 网上很多办法比较简单粗暴,把两个python.exe改名啊,一个改成python2.exe,一个改成python3.exe。这样做固然可以,但修改可执行文件的方式,毕竟不是很好的方法? 我仔细查找了一些python技术文?,发现另外一个我觉得比较好的解决办法? 借用py的一个参数来调用不同版本的Python。py -2调用python2,py -3调用的是python3. 当python脚本需要python2运行时,只需在脚本前加上,然后运行py xxx.py即可? #! python2 当python脚本需要python3运行时,只需在脚本前加上,,然后运行py xxx.py即可? #! python3 就这么简单? 同时,这也完美解决了在pip在python2和python3共存的环境下报错,提示Fatal error in launcher: Unable to create process using '"'的问题? 当需要python2的pip时,只需 py -2 -m pip install xxx 当需要python3的pip时,只需 py -3 -m pip install xxx python2和python3的pip package就这样可以完美分开了?img src ="//www.ot7t.com.cn/xzclog/aggbug/433500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/xzclog/" target="_blank">xzc</a> 2018-11-16 09:38 <a href="//www.ot7t.com.cn/xzclog/archive/2018/11/16/433500.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>hive集成sentry的sql用法?/title><link>//www.ot7t.com.cn/xzclog/archive/2018/09/03/433353.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Mon, 03 Sep 2018 10:19:00 GMT</pubDate><guid>//www.ot7t.com.cn/xzclog/archive/2018/09/03/433353.html</guid><wfw:comment>//www.ot7t.com.cn/xzclog/comments/433353.html</wfw:comment><comments>//www.ot7t.com.cn/xzclog/archive/2018/09/03/433353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/xzclog/comments/commentRss/433353.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/xzclog/services/trackbacks/433353.html</trackback:ping><description><![CDATA[ Sentry权限控制通过Beeline(Hiveserver2 SQL 命令行接口)输入Grant ?Revoke语句来配置。语法跟现在的一些主流的关系数据库很相似。需要注意的是:当sentry服务启用后,我们必须使用beeline接口来执行hive查询,Hive Cli并不支持sentry? CREATE ROLE Statement CREATE ROLE语句创建一个可以被赋权的角色。权限可以赋给角色,然后再分配给各个用户。一个用户被分配到角色后可以执行该角色的权限? 只有拥有管理员的角色可以create/drop角色。默认情况下,hive、impala和hue用户拥有管理员角色? CREATE ROLE [role_name]; DROP ROLE Statement DROP ROLE语句可以用来从数据库中移除一个角色。一旦移除,之前分配给所有用户的该角色将会取消。之前已经执行的语句不会受到影响。但是,因为hive在执行每条查询语句之前会检查用户的权限,处于登录活跃状态的用户会话会受到影响? DROP ROLE [role_name]; GRANT ROLE Statement GRANT ROLE语句可以用来给组授予角色。只有sentry的管理员用户才能执行该操作? GRANT ROLE role_name [, role_name] TO GROUP (groupName?[,GROUP (groupName)] REVOKE ROLE Statement REVOKE ROLE语句可以用来从组移除角色。只有sentry的管理员用户才能执行该操作? REVOKE ROLE role_name [, role_name] FROM GROUP (groupName) [,GROUP (groupName)] GRANT (PRIVILEGE) Statement 授予一个对象的权限给一个角色,该用户必须为sentry的管理员用户? GRANT (PRIVILEGE) [, (PRIVILEGE) ] ON (OBJECT) (object_name) TO ROLE (roleName) [,ROLE (roleName)] REVOKE (PRIVILEGE?Statement 因为只有认证的管理员用户可以创建角色,从而只有管理员用户可以取消一个组的权限? REVOKE (PRIVILEGE) [, (PRIVILEGE) ] ON (OBJECT) (object_name) FROM ROLE (roleName) [,ROLE (roleName)] GRANT (PRIVILEGE) ... WITH GRANT OPTION 在cdh5.2中,你可以委托给其他角色来授予和解除权限。比如,一个角色被授予了WITH GRANT OPTION的权限可以GRANT/REVOKE同样的权限给其他角色。因此,如果一个角色有一个库的所有权限并且设置了 WITH GRANT OPTION,该角色分配的用户可以对该数据库和其中的表执行GRANT/REVOKE语句? GRANT (PRIVILEGE? ON (OBJECT?(object_name? TO ROLE (roleName? WITH GRANT OPTION 只有一个带GRANT选项的特殊权限的角色或者它的父级权限可以从其他角色解除这种权限。一旦下面的语句执行,所有跟其相关的grant权限将会被解除? REVOKE (RIVILEGE? ON (BJECT?(bject_name? FROM ROLE (roleName? Hive目前不支持解除之前赋予一个角?WITH GRANT OPTION 的权限。要想移除WITH GRANT OPTION、解除权限,可以重新去除 WITH GRANT OPTION这个标记来再次附权? SET ROLE Statement SET ROLE语句可以给当前会话选择一个角色使之生效。一个用户只能启用分配给他的角色。任何不存在的角色和当前用户不能使用的角色是不能生效的。如果没有使用任何角色,用户将会使用任何一个属于他的角色的权限? 选择一个角色使用: To enable a specific role: 使用所有的角色? To enable a specific role: 关闭所有角? SET ROLE NONE; SHOW Statement 显示当前用户拥有库、表、列相关权限的数据库? SHOW DATABASES; 显示当前用户拥有表、列相关权限的表? SHOW TABLES; 显示当前用户拥有SELECT权限的列? SHOW COLUMNS (FROM|IN) table_name [(FROM|IN) db_name]; 显示当前系统中所有的角色(只有管理员用户可以执行): SHOW ROLES; 显示当前影响当前会话的角色: SHOW CURRENT ROLES; 显示指定组的被分配到的所有角色(只有管理员用户和指定组内的用户可以执行) SHOW ROLE GRANT GROUP (groupName); SHOW语句可以用来显示一个角色被授予的权限或者显示角色的一个特定对象的所有权限? 显示指定角色的所有被赋予的权限。(只有管理员用户和指定角色分配到的用户可以执行)。下面的语句也会显示任何列级的权限? SHOW GRANT ROLE (roleName); 显示指定对象的一个角色的所有被赋予的权限(只有管理员用户和指定角色分配到的用户可以执行)。下面的语句也会显示任何列级的权限? SHOW GRANT ROLE (roleName) on (OBJECT) (objectName); ----------------------------我也是有底线?----------------------------<img src ="//www.ot7t.com.cn/xzclog/aggbug/433353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/xzclog/" target="_blank">xzc</a> 2018-09-03 18:19 <a href="//www.ot7t.com.cn/xzclog/archive/2018/09/03/433353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python编码和解?/title><link>//www.ot7t.com.cn/xzclog/archive/2018/05/18/433218.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Fri, 18 May 2018 01:52:00 GMT</pubDate><guid>//www.ot7t.com.cn/xzclog/archive/2018/05/18/433218.html</guid><wfw:comment>//www.ot7t.com.cn/xzclog/comments/433218.html</wfw:comment><comments>//www.ot7t.com.cn/xzclog/archive/2018/05/18/433218.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/xzclog/comments/commentRss/433218.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/xzclog/services/trackbacks/433218.html</trackback:ping><description><![CDATA[     摘要: Python 里面的编码和解码也就?nbsp;unicode ?nbsp;str 这两种形式的相互转化。编码是 unicode -> str,相反的,解码就?nbsp;str -> unicode。剩下的问题就是确定何时需要进行编码或者解码了.关于文件开头的"编码指示",也就是 # -*- codin...  <a href='//www.ot7t.com.cn/xzclog/archive/2018/05/18/433218.html'>阅读全文</a><img src ="//www.ot7t.com.cn/xzclog/aggbug/433218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/xzclog/" target="_blank">xzc</a> 2018-05-18 09:52 <a href="//www.ot7t.com.cn/xzclog/archive/2018/05/18/433218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>kafka节点假死 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/xzclog/archive/2018/03/08/433087.htmlxzcxzcThu, 08 Mar 2018 08:35:00 GMT//www.ot7t.com.cn/xzclog/archive/2018/03/08/433087.html//www.ot7t.com.cn/xzclog/comments/433087.html//www.ot7t.com.cn/xzclog/archive/2018/03/08/433087.html#Feedback0//www.ot7t.com.cn/xzclog/comments/commentRss/433087.html//www.ot7t.com.cn/xzclog/services/trackbacks/433087.html
一、前言
    早上醒来打开微信,同事反馈kafka集群从昨天凌晨开始写入频繁失败,赶紧打开电脑查看了kafka集群的机器监控,日志信息,发现其中一个节点的集群负载从昨天凌晨突然掉下来了,和同事反馈的时间点大概一致,于是乎就登录服务器开始干活?/div>
二、排?/div>
1、查看机器监控,看是否能大概定位是哪个节点有异常
技术分?/div>
2、根据机器监控大概定位到其中一个异常节点,登录服务器查看kafka日志,发现有报错日志,并且日志就停留在这个这个时间点?/div>
[2017-06-01 16:59:59,851] ERROR Processor got uncaught exception. (kafka.network.Processor)
java.lang.OutOfMemoryError: Direct buffer memory
        at java.nio.Bits.reserveMemory(Bits.java:658)
        at java.nio.DirectByteBuffer.<init>(DirectByteBuffer.java:123)
        at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:306)
        at sun.nio.ch.Util.getTemporaryDirectBuffer(Util.java:174)
        at sun.nio.ch.IOUtil.read(IOUtil.java:195)
        at sun.nio.ch.SocketChannelImpl.read(SocketChannelImpl.java:379)
        at org.apache.kafka.common.network.PlaintextTransportLayer.read(PlaintextTransportLayer.java:108)
        at org.apache.kafka.common.network.NetworkReceive.readFromReadableChannel(NetworkReceive.java:97)
        at org.apache.kafka.common.network.NetworkReceive.readFrom(NetworkReceive.java:71)
        at org.apache.kafka.common.network.KafkaChannel.receive(KafkaChannel.java:160)
        at org.apache.kafka.common.network.KafkaChannel.read(KafkaChannel.java:141)
        at org.apache.kafka.common.network.Selector.poll(Selector.java:286)
        at kafka.network.Processor.run(SocketServer.scala:413)3、查看kafka进程和监听端口情况,发现都正常,尼玛假死?/div>
ps -ef |grep kafka        ## 查看kafka的进?/div>
netstat -ntlp |grep 9092  ##9092kafka的监听端?、既然已经假死了,只能重启了
ps -ef |grep kafka |grep -v grep |awk ‘{print $2}‘  | xargs kill -9  
/usr/local/kafka/bin;nohup ./kafka-server-start.sh ../config/server.properties &5、重启后在观察该节点的kafka日志,在一顿index重建之后,上面的报错信息在疯狂的刷,最后谷歌一番,解决了该问题
三、解决方案:
?/div>
/usr/local/kafka/binkafka-run-class.sh去掉
-XX:+DisableExplicitGC添加
-XX:MaxDirectMemorySize=512m在一次重启kafka,问题解决?/div>


xzc 2018-03-08 16:35 发表评论
]]>Hive中reduce个数设定 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/xzclog/archive/2018/03/07/433084.htmlxzcxzcWed, 07 Mar 2018 03:21:00 GMT//www.ot7t.com.cn/xzclog/archive/2018/03/07/433084.html//www.ot7t.com.cn/xzclog/comments/433084.html//www.ot7t.com.cn/xzclog/archive/2018/03/07/433084.html#Feedback1//www.ot7t.com.cn/xzclog/comments/commentRss/433084.html//www.ot7t.com.cn/xzclog/services/trackbacks/433084.html阅读全文

xzc 2018-03-07 11:21 发表评论
]]>
spark 累加历史 + 统计全部 + 行转?/title><link>//www.ot7t.com.cn/xzclog/archive/2017/10/23/432867.html</link><dc:creator>xzc</dc:creator><author>xzc</author><pubDate>Mon, 23 Oct 2017 14:05:00 GMT</pubDate><guid>//www.ot7t.com.cn/xzclog/archive/2017/10/23/432867.html</guid><wfw:comment>//www.ot7t.com.cn/xzclog/comments/432867.html</wfw:comment><comments>//www.ot7t.com.cn/xzclog/archive/2017/10/23/432867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>//www.ot7t.com.cn/xzclog/comments/commentRss/432867.html</wfw:commentRss><trackback:ping>//www.ot7t.com.cn/xzclog/services/trackbacks/432867.html</trackback:ping><description><![CDATA[     摘要: spark 累加历史主要用到了窗口函数,而进行全部统计,则需要用到rollup函数 1  应用场景?  1、我们需要统计用户的总使用时长(累加历史?  2、前台展现页面需要对多个维度进行查询,如:产品、地区等?  3、需要展现的表格头如?产品?015-04?015-05?015-06 2 原始数据? product_code |event_date |dur...  <a href='//www.ot7t.com.cn/xzclog/archive/2017/10/23/432867.html'>阅读全文</a><img src ="//www.ot7t.com.cn/xzclog/aggbug/432867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="//www.ot7t.com.cn/xzclog/" target="_blank">xzc</a> 2017-10-23 22:05 <a href="//www.ot7t.com.cn/xzclog/archive/2017/10/23/432867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spark分析窗口函数 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/xzclog/archive/2017/10/23/432866.htmlxzcxzcMon, 23 Oct 2017 14:04:00 GMT//www.ot7t.com.cn/xzclog/archive/2017/10/23/432866.html//www.ot7t.com.cn/xzclog/comments/432866.html//www.ot7t.com.cn/xzclog/archive/2017/10/23/432866.html#Feedback0//www.ot7t.com.cn/xzclog/comments/commentRss/432866.html//www.ot7t.com.cn/xzclog/services/trackbacks/432866.html阅读全文

xzc 2017-10-23 22:04 发表评论
]]>
SparkSQL相关语句总结 - 四川福利彩票快乐12快乐12开奖直播快乐12开奖辽宁福彩快乐12快乐彩12选5走势图//www.ot7t.com.cn/xzclog/archive/2017/10/23/432865.htmlxzcxzcMon, 23 Oct 2017 13:03:00 GMT//www.ot7t.com.cn/xzclog/archive/2017/10/23/432865.html//www.ot7t.com.cn/xzclog/comments/432865.html//www.ot7t.com.cn/xzclog/archive/2017/10/23/432865.html#Feedback0//www.ot7t.com.cn/xzclog/comments/commentRss/432865.html//www.ot7t.com.cn/xzclog/services/trackbacks/432865.html浙江快乐12开奖结果:SparkSQL相关语句总结

1.in 不支持子查询 eg. select * from src where key in(select key from test);
支持查询个数 eg. select * from src where key in(1,2,3,4,5);
in 40000?耗时25.766?br />in 80000?耗时78.827?br />
2.union all/union
不支持顶层的union all eg. select key from src UNION ALL select key from test;
支持select * from (select key from src union all select key from test)aa;
不支?union
支持select distinct key from (select key from src union all select key from test)aa;

3.intersect 不支?/strong>

4.minus 不支?/strong>

5.except 不支?/strong>

6.inner join/join/left outer join/right outer join/full outer join/left semi join 都支?/strong>
left outer join/right outer join/full outer join 中间必须有outer
join是最简单的关联操作,两边关联只取交?
left outer join是以左表驱动,右表不存在的key均赋值为null?br />right outer join是以右表驱动,左表不存在的key均赋值为null?br />full outer join全表关联,将两表完整的进行笛卡尔积操作,左右表均可赋值为null;
left semi join最主要的使用场景就是解决exist in;
Hive不支持where子句中的子查询,SQL常用的exist in子句在Hive中是不支持的
不支持子查询 eg. select * from src aa where aa.key in(select bb.key from test bb);
可用以下两种方式替换?br />select * from src aa left outer join test bb on aa.key=bb.key where bb.key <> null;
select * from src aa left semi join test bb on aa.key=bb.key;
大多数情况下 JOIN ON ?left semi on 是对等的
A,B两表连接,如果B表存在重复数?br />当使用JOIN ON的时候,A,B表会关联出两条记录,应为ON上的条件符合?span class="Apple-converted-space"> 
而是用LEFT SEMI JOIN 当A表中的记录,在B表上产生符合条件之后就返回,不会再继续查找B表记录了?br />所以如果B表有重复,也不会产生重复的多条记录?span class="Apple-converted-space"> 
left outer join 支持子查?eg. select aa.* from src aa left outer join (select * from test111)bb on aa.key=bb.a;

7. hive四中数据导入方式
1?strong>从本地文件系统中导入数据到Hive?/strong>
create table wyp(id int,name string) ROW FORMAT delimited fields terminated by '\t' STORED AS TEXTFILE;
load data local inpath 'wyp.txt' into table wyp;
2)从HDFS上导入数据到Hive?/strong>
[wyp@master /home/q/hadoop-2.2.0]$ bin/hadoop fs -cat /home/wyp/add.txt
hive> load data inpath '/home/wyp/add.txt' into table wyp;
3)从别的表中查询出相应的数据并导入到Hive表中
hive> create table test(
> id int, name string
> ,tel string)
> partitioned by
> (age int)
> ROW FORMAT DELIMITED
> FIELDS TERMINATED BY '\t'
> STORED AS TEXTFILE;

注:test表里面用age作为了分区字段,分区:在Hive中,表的每一个分区对应表下的相应目录,所有分区的数据都是存储在对应的目录中?br />比如wyp表有dt和city两个分区,则对应dt=20131218city=BJ对应表的目录?user/hive/warehouse/dt=20131218/city=BJ?br />所有属于这个分区的数据都存放在这个目录中?br />
hive> insert into table test
> partition (age='25')
> select id, name, tel
> from wyp;

也可以在select语句里面通过使用分区值来动态指明分区:
hive> set hive.exec.dynamic.partition.mode=nonstrict;
hive> insert into table test
> partition (age)
> select id, name,
> tel, age
> from wyp;

Hive也支持insert overwrite方式来插入数?/strong>
hive> insert overwrite table test
> PARTITION (age)
> select id, name, tel, age
> from wyp;

Hive还支持多表插?br />hive> from wyp
> insert into table test
> partition(age)
> select id, name, tel, age
> insert into table test3
> select id, name
> where age>25;
4)在创建表的时候通过从别的表中查询出相应的记录并插入到所创建的表?/strong>
hive> create table test4
> as
> select id, name, tel
> from wyp;

8.查看建表语句
hive> show create table test3;

9.表重命名
hive> ALTER TABLE events RENAME TO 3koobecaf; 

10.表增加列
hive> ALTER TABLE pokes ADD COLUMNS (new_col INT); 

11.添加一列并增加列字段注?/strong> 
hive> ALTER TABLE invites ADD COLUMNS (new_col2 INT COMMENT 'a comment'); 

12.删除?/strong>
hive> DROP TABLE pokes; 

13.top n
hive> select * from test order by key limit 10;
14.创建数据?/strong>
Create Database baseball;

14.alter table tablename  change oldColumn newColumn column_type 修改列的名称和类?/strong>

alter table yangsy CHANGE product_no phone_no string

 

15.导入.sql文件中的sql

 spark-sql --driver-class-path /home/hadoop/hive/lib/mysql-connector-java-5.1.30-bin.jar -f testsql.sql 


insert into table CI_CUSER_20141117154351522 select mainResult.PRODUCT_NO,dw_coclbl_m02_3848.L1_01_02_01,dw_coclbl_d01_3845.L2_01_01_04 from (select PRODUCT_NO from CI_CUSER_20141114203632267) mainResult left join DW_COCLBL_M02_201407 dw_coclbl_m02_3848 on mainResult.PRODUCT_NO = dw_coclbl_m02_3848.PRODUCT_NO left join DW_COCLBL_D01_20140515 dw_coclbl_d01_3845 on dw_coclbl_m02_3848.PRODUCT_NO = dw_coclbl_d01_3845.PRODUCT_NO

insert into CI_CUSER_20141117142123638 ( PRODUCT_NO,ATTR_COL_0000,ATTR_COL_0001) select mainResult.PRODUCT_NO,dw_coclbl_m02_3848.L1_01_02_01,dw_coclbl_m02_3848.L1_01_03_01 from (select PRODUCT_NO from CI_CUSER_20141114203632267) mainResult left join DW_COCLBL_M02_201407 dw_coclbl_m02_3848 on mainResult.PRODUCT_NO = dw_coclbl_m02_3848.PRODUCT_NO 


CREATE TABLE ci_cuser_yymmddhhmisstttttt_tmp(product_no string) row format serde 'com.bizo.hive.serde.csv.CSVSerde' ; 
LOAD DATA LOCAL INPATH '/home/ocdc/coc/yuli/test123.csv' OVERWRITE INTO TABLE test_yuli2;

创建支持CSV格式的testfile文件
CREATE TABLE test_yuli7 row format serde 'com.bizo.hive.serde.csv.CSVSerde' as select * from CI_CUSER_20150310162729786;

不依赖CSVSerde的jar包创建逗号分隔的表
"create table " +listName+ " ROW FORMAT DELIMITED FIELDS TERMINATED BY ','" +
" as select * from " + listName1;

create table aaaa ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n' STORED AS TEXTFILE as select * from

ThriftServer 开启FAIR模式
SparkSQL Thrift Server 开启FAIR调度方式:
1. 修改$SPARK_HOME/conf/spark-defaults.conf,新增
2. spark.scheduler.mode FAIR
3. spark.scheduler.allocation.file /Users/tianyi/github/community/apache-spark/conf/fair-scheduler.xml
4. 修改$SPARK_HOME/conf/fair-scheduler.xml(或新增该文件), 编辑如下格式内容
5. <?xml version="1.0"?>
6. <allocations>
7. <pool name="production">
8. <schedulingMode>FAIR</schedulingMode>
9. <!-- weight表示两个队列在minShare相同的情况下,可以使用资源的比?-->
10. <weight>1</weight>
11. <!-- minShare表示优先保证的资源数 -->
12. <minShare>2</minShare>
13. </pool>
14. <pool name="test">
15. <schedulingMode>FIFO</schedulingMode>
16. <weight>2</weight>
17. <minShare>3</minShare>
18. </pool>
19. </allocations>
20. 重启Thrift Server
21. 执行SQL?执行 
22. set spark.sql.thriftserver.scheduler.pool=指定的队列名

等操作完?create table yangsy555 like CI_CUSER_YYMMDDHHMISSTTTTTT 然后insert into yangsy555 select * from yangsy555

 

创建一个自增序列表,使用row_number() over()为表增加序列?以供分页查询

create table yagnsytest2 as SELECT ROW_NUMBER() OVER() as id,* from yangsytest;

 

 

Sparksql的解析与Hiveql的解析的执行流程:



]]>