??xml version="1.0" encoding="utf-8" standalone="yes"?>午夜亚洲成人,超碰免费在线播放,粉嫩av一区二区http://www.aygfsteel.com/xzclog/zh-cnWed, 30 Apr 2025 08:13:11 GMTWed, 30 Apr 2025 08:13:11 GMT60Pythond、创建文?/title><link>http://www.aygfsteel.com/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>http://www.aygfsteel.com/xzclog/archive/2018/11/28/433526.html</guid><wfw:comment>http://www.aygfsteel.com/xzclog/comments/433526.html</wfw:comment><comments>http://www.aygfsteel.com/xzclog/archive/2018/11/28/433526.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xzclog/comments/commentRss/433526.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xzclog/services/trackbacks/433526.html</trackback:ping><description><![CDATA[ 原文链接Qhttp://www.cnblogs.com/juandx/p/4962089.html python中对文g、文件夹Q文件操作函敎ͼ的操作需要涉及到os模块和shutil模块? 得到当前工作目录Q即当前Python脚本工作的目录\? os.getcwd() q回指定目录下的所有文件和目录?os.listdir() 函数用来删除一个文?os.remove() 删除多个目录Qos.removedirsQr“cQ\python”Q? 验给出的路径是否是一个文Ӟos.path.isfile() 验给出的路径是否是一个目录:os.path.isdir() 判断是否是绝对\径:os.path.isabs() 验给出的路径是否真地?os.path.exists() q回一个\径的目录名和文g?os.path.split() eg os.path.split(‘/home/swaroop/byte/code/poem.txt’) l果Q?‘/home/swaroop/byte/code’, ‘poem.txt’) 分离扩展名:os.path.splitext() 获取路径名:os.path.dirname() 获取文g名:os.path.basename() q行shell命o: os.system() d和设|环境变?os.getenv() 与os.putenv() l出当前q_使用的行l止W?os.linesep Windows使用’\r\n’QLinux使用’\n’而Mac使用’\r’ 指示你正在用的q_Qos.name 对于WindowsQ它?#8217;nt’Q而对于Linux/Unix用户Q它?#8217;posix’ 重命名:os.renameQoldQ?newQ? 创徏多目录Qos.makedirsQr“cQ\python\test”Q? 创徏单个目录Qos.mkdirQ?#8220;test”Q? 获取文g属性:os.statQfileQ? 修改文g权限与时间戳Qos.chmodQfileQ? l止当前q程Qos.exitQ) 获取文g大小Qos.path.getsizeQfilenameQ? 文g操作Q? os.mknod(“test.txt”) 创徏I文? fp = open(“test.txt”,w) 直接打开一个文Ӟ如果文g不存在则创徏文g 关于open 模式Q? w 以写方式打开Q? a 以追加模式打开 (?EOF 开? 必要时创建新文g) r+ 以读写模式打开 w+ 以读写模式打开 (参见 w ) a+ 以读写模式打开 (参见 a ) rb 以二q制L式打开 wb 以二q制写模式打开 (参见 w ) ab 以二q制q加模式打开 (参见 a ) rb+ 以二q制d模式打开 (参见 r+ ) wb+ 以二q制d模式打开 (参见 w+ ) ab+ 以二q制d模式打开 (参见 a+ ) fp.read([size]) #size取的长度Q以byte为单? fp.readline([size]) #M行,如果定义了sizeQ有可能q回的只是一行的一部分 fp.readlines([size]) #把文件每一行作Z个list的一个成员,q返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数Qsize是表C取内容的总长Q也是说可能只d文g的一部分? fp.write(str) #把str写到文g中,write()q不会在str后加上一个换行符 fp.writelines(seq) #把seq的内容全部写到文件中(多行一ơ性写?。这个函C只是忠实地写入,不会在每行后面加上Q何东ѝ? fp.close() #关闭文g。python会在一个文件不用后自动关闭文gQ不q这一功能没有保证Q最好还是养成自己关闭的习惯?如果一个文件在关闭后还对其q行操作会生ValueError fp.flush() #把缓冲区的内容写入硬? fp.fileno() #q回一个长整型?#8221;文g标签“ fp.isatty() #文g是否是一个终端设备文Ӟunixpȝ中的Q? fp.tell() #q回文g操作标记的当前位|,以文件的开头ؓ原点 fp.next() #q回下一行,q将文g操作标记位移C一行。把一个file用于for … in fileq样的语句时Q就是调用next()函数来实现遍历的? fp.seek(offset[,whence]) #文件打操作标记Udoffset的位|。这个offset一般是相对于文件的开头来计算的,一般ؓ正数。但如果提供了whence参数׃一定了Qwhence可以?表示从头开始计,1表示以当前位|ؓ原点计算?表示以文件末ؓ原点q行计算。需要注意,如果文g以a或a+的模式打开Q每ơ进行写操作Ӟ文g操作标记会自动返回到文g末尾? fp.truncate([size]) #把文件裁成规定的大小Q默认的是裁到当前文件操作标记的位置。如果size比文件的大小q要大,依据pȝ的不同可能是不改变文Ӟ也可能是?把文件补到相应的大小Q也可能是以一些随机的内容加上厅R? 目录操作Q? os.mkdir(“file”) 创徏目录 复制文gQ? shutil.copyfile(“oldfile”,”newfile”) oldfile和newfile都只能是文g shutil.copy(“oldfile”,”newfile”) oldfile只能是文件夹Qnewfile可以是文Ӟ也可以是目标目录 复制文g夹: shutil.copytree(“olddir”,”newdir”) olddir和newdir都只能是目录Q且newdir必须不存? 重命名文Ӟ目录Q? os.rename(“oldname”,”newname”) 文g或目录都是用这条命? Ud文gQ目录) shutil.move(“oldpos”,”newpos”) 删除文g os.remove(“file”) 删除目录 os.rmdir(“dir”)只能删除I目? shutil.rmtree(“dir”) I目录、有内容的目录都可以? 转换目录 os.chdir(“path”) 换\? Pythond文g 1.open 使用open打开文g后一定要记得调用文g对象的close()Ҏ。比如可以用try/finally语句来确保最后能关闭文g? file_object = open(‘thefile.txt’) try: all_the_text = file_object.read( ) finally: file_object.close( ) 注:不能把open语句攑֜try块里Q因为当打开文g出现异常Ӟ文g对象file_object无法执行close()Ҏ? 2.L? L本文? input = open('data', 'r') #W二个参数默认ؓr input = open('data') 1 2 3 Mq制文g input = open('data', 'rb') 1 d所有内? file_object = open('thefile.txt') try: all_the_text = file_object.read( ) finally: file_object.close( ) 1 2 3 4 5 d定字? 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 L? list_of_all_the_lines = file_object.readlines( ) 1 如果文g是文本文Ӟq可以直接遍历文件对象获取每行: for line in file_object: process line 1 2 3.写文? 写文本文? output = open('data', 'w') 1 写二q制文g output = open('data', 'wb') 1 q加写文? 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 注意Q调用writelines写入多行在性能上会比用write一ơ性写入要高? 在处理日志文件的时候,常常会遇到这L情况Q日志文件巨大,不可能一ơ性把整个文gd到内存中q行处理Q例如需要在一台物理内存ؓ 2GB 的机器上处理一?2GB 的日志文Ӟ我们可能希望每次只处理其?200MB 的内宏V? ?Python 中,内置?File 对象直接提供了一?readlines(sizehint) 函数来完成这L事情。以下面的代码ؓ例: 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) 函数Q会q回大约 200MB 的数据,而且所q回的必焉是完整的行数据,大多数情况下Q返回的数据的字节数会稍微比 sizehint 指定的值大一点(除最后一ơ调?readlines(sizehint) 函数的时候)。通常情况下,Python 会自动将用户指定?sizehint 的D整成内部~存大小的整数倍? file在python是一个特D的cdQ它用于在pythonE序中对外部的文件进行操作。在python中一切都是对象,file也不例外Qfile有file的方法和属性。下面先来看如何创徏一个file对象Q? file(name[, mode[, buffering]]) 1 file()函数用于创徏一个file对象Q它有一个别名叫open()Q可能更形象一些,它们是内|函数。来看看它的参数。它参数都是以字W串的Ş式传递的。name是文件的名字? mode是打开的模式,可选的gؓr w a UQ分别代表读Q默认) ?d支持各种换行W的模式。用w或a模式打开文g的话Q如果文件不存在Q那么就自动创徏。此外,用w模式打开一个已l存在的文gӞ原有文g的内容会被清I,因ؓ一开始文件的操作的标记是在文件的开头的Q这时候进行写操作Q无疑会把原有的内容l抹掉。由于历史的原因Q换行符在不同的pȝ中有不同模式Q比如在 unix中是一个\nQ而在windows中是‘\r\n’Q用U模式打开文gQ就是支持所有的换行模式Q也p‘\r’ ‘\n’ ‘\r\n’都可表示换行Q会有一个tuple用来存贮q个文g中用到过的换行符。不q,虽说换行有多U模式,dpython中统一用\n代替。在模式字符的后面,q可以加? b tq两U标识,分别表示可以Ҏ件同时进行读写操作和用二q制模式、文本模式(默认Q打开文g? buffering如果?表示不进行缓?如果?表示q行“行缓?#8220;;如果是一个大?的数表示~冲区的大小Q应该是以字节ؓ单位的? file对象有自q属性和Ҏ。先来看看file的属性? closed #标记文g是否已经关闭Q由close()改写 encoding #文g~码 mode #打开模式 name #文g? newlines #文g中用到的换行模式Q是一个tuple softspace #boolean型,一般ؓ0Q据说用于print 1 2 3 4 5 6 file的读写方法: F.read([size]) #size取的长度Q以byte为单? F.readline([size]) #M行,如果定义了sizeQ有可能q回的只是一行的一部分 F.readlines([size]) #把文件每一行作Z个list的一个成员,q返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数Qsize是表C取内容的总长Q也是说可能只d文g的一部分? F.write(str) #把str写到文g中,write()q不会在str后加上一个换行符 F.writelines(seq) #把seq的内容全部写到文件中。这个函C只是忠实地写入,不会在每行后面加上Q何东ѝ? file的其他方法: F.close() #关闭文g。python会在一个文件不用后自动关闭文gQ不q这一功能没有保证Q最好还是养成自己关闭的习惯。如果一个文件在关闭后还对其q行操作会生ValueError F.flush() #把缓冲区的内容写入硬? F.fileno() #q回一个长整型?#8221;文g标签“ F.isatty() #文g是否是一个终端设备文Ӟunixpȝ中的Q? F.tell() #q回文g操作标记的当前位|,以文件的开头ؓ原点 F.next() #q回下一行,q将文g操作标记位移C一行。把一个file用于for ... in fileq样的语句时Q就是调用next()函数来实现遍历的? F.seek(offset[,whence]) #文件打操作标记Udoffset的位|。这个offset一般是相对于文件的开头来计算的,一般ؓ正数。但如果提供了whence参数׃一定了Qwhence可以?表示从头开始计,1表示以当前位|ؓ原点计算?表示以文件末ؓ原点q行计算。需要注意,如果文g以a或a+的模式打开Q每ơ进行写操作Ӟ文g操作标记会自动返回到文g末尾? F.truncate([size]) #把文件裁成规定的大小Q默认的是裁到当前文件操作标记的位置。如果size比文件的大小q要大,依据pȝ的不同可能是不改变文Ӟ也可能是?把文件补到相应的大小Q也可能是以一些随机的内容加上厅R? 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 http://www.cnblogs.com/allenblogs/archive/2010/09/13/1824842.html http://www.cnblogs.com/rollenholt/archive/2012/04/23/2466179.html<img src ="http://www.aygfsteel.com/xzclog/aggbug/433526.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xzclog/" target="_blank">xzc</a> 2018-11-28 11:52 <a href="http://www.aygfsteel.com/xzclog/archive/2018/11/28/433526.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>HDFS副本讄——默?http://www.aygfsteel.com/xzclog/archive/2018/11/26/433518.htmlxzcxzcMon, 26 Nov 2018 03:52:00 GMThttp://www.aygfsteel.com/xzclog/archive/2018/11/26/433518.htmlhttp://www.aygfsteel.com/xzclog/comments/433518.htmlhttp://www.aygfsteel.com/xzclog/archive/2018/11/26/433518.html#Feedback0http://www.aygfsteel.com/xzclog/comments/commentRss/433518.htmlhttp://www.aygfsteel.com/xzclog/services/trackbacks/433518.html

xzc 2018-11-26 11:52 发表评论
]]>
当同时安装Python2和Python3后,如何兼容q切换用详解(比如pip使用Q?/title><link>http://www.aygfsteel.com/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>http://www.aygfsteel.com/xzclog/archive/2018/11/16/433500.html</guid><wfw:comment>http://www.aygfsteel.com/xzclog/comments/433500.html</wfw:comment><comments>http://www.aygfsteel.com/xzclog/archive/2018/11/16/433500.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xzclog/comments/commentRss/433500.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xzclog/services/trackbacks/433500.html</trackback:ping><description><![CDATA[转自Qhttps://www.cnblogs.com/shabbylee/p/6792555.html ׃历史原因QPython有两个大的版本分支,Python2和Python3Q又׃一些库只支持某个版本分支,所以需要在电脑上同时安装Python2和Python3Q因此如何让两个版本的Python兼容Q如何让脚本在对应的Python版本上运行,q个是值得ȝ的? 对于Ubuntu 16.04 LTS版本来说QPython2Q?.7.12Q和Python3Q?.5.2Q默认同时安装,默认的python版本?.7.12? 当然你也可以用python2来调用? 如果惌用python3Q就用python3. 对于WindowsQ就有点复杂了。因Z论python2q是python3Qpython可执行文仉叫python.exeQ在cmd下输入python得到的版本号取决于环境变量里哪个版本的python路径更靠前,毕竟windows是按照顺序查扄。比如环境变量里的顺序是q样的: 那么cmd下的python版本是2.7.12? 反之Q则是python3的版本号? q就带来一个问题了Q如果你想用python2q行一个脚本,一会你又想用python3q行另一个脚本,你怎么做?来回改环境变量显然很ȝ? |上很多办法比较单粗_把两个python.exe改名啊,一个改成python2.exeQ一个改成python3.exe。这样做固然可以Q但修改可执行文件的方式Q毕竟不是很好的Ҏ? 我仔l查找了一些python技术文档,发现另外一个我觉得比较好的解决办法? 借用py的一个参数来调用不同版本的Python。py -2调用python2Qpy -3调用的是python3. 当python脚本需要python2q行Ӟ只需在脚本前加上Q然后运行py xxx.py卛_? #! python2 当python脚本需要python3q行Ӟ只需在脚本前加上Q,然后q行py xxx.py卛_? #! python3 p么简单? 同时Q这也完解决了在pip在python2和python3共存的环境下报错Q提CFatal 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 packagep样可以完分开了?img src ="http://www.aygfsteel.com/xzclog/aggbug/433500.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xzclog/" target="_blank">xzc</a> 2018-11-16 09:38 <a href="http://www.aygfsteel.com/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>http://www.aygfsteel.com/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>http://www.aygfsteel.com/xzclog/archive/2018/09/03/433353.html</guid><wfw:comment>http://www.aygfsteel.com/xzclog/comments/433353.html</wfw:comment><comments>http://www.aygfsteel.com/xzclog/archive/2018/09/03/433353.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xzclog/comments/commentRss/433353.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xzclog/services/trackbacks/433353.html</trackback:ping><description><![CDATA[ Sentry权限控制通过BeelineQHiveserver2 SQL 命o行接口)输入Grant ?Revoke语句来配|。语法跟现在的一些主的关系数据库很怼。需要注意的是:当sentry服务启用后,我们必须使用beeline接口来执行hive查询QHive Cliq不支持sentry? CREATE ROLE Statement CREATE ROLE语句创徏一个可以被赋权的角艌Ӏ权限可以赋l角Ԍ然后再分配给各个用户。一个用戯分配到角色后可以执行该角色的权限? 只有拥有理员的角色可以create/drop角色。默认情况下Qhive、impala和hue用户拥有理员角艌Ӏ? CREATE ROLE [role_name]; DROP ROLE Statement DROP ROLE语句可以用来从数据库中移除一个角艌Ӏ一旦移除,之前分配l所有用L该角色将会取消。之前已l执行的语句不会受到影响。但是,因ؓhive在执行每条查询语句之前会查用L权限Q处于登录活跃状态的用户会话会受到媄响? DROP ROLE [role_name]; GRANT ROLE Statement GRANT ROLE语句可以用来l组授予角色。只有sentry的管理员用户才能执行该操作? GRANT ROLE role_name [, role_name] TO GROUP QgroupNameQ?[,GROUP QgroupNameQ] REVOKE ROLE Statement REVOKE ROLE语句可以用来从组U除角色。只有sentry的管理员用户才能执行该操作? REVOKE ROLE role_name [, role_name] FROM GROUP QgroupName) [,GROUP (groupName)] GRANT (PRIVILEGE) Statement 授予一个对象的权限l一个角Ԍ该用户必Mؓsentry的管理员用户? GRANT (PRIVILEGE) [, (PRIVILEGE) ] ON (OBJECT) (object_name) TO ROLE (roleName) [,ROLE (roleName)] REVOKE QPRIVILEGEQ?Statement 因ؓ只有认证的管理员用户可以创徏角色Q从而只有管理员用户可以取消一个组的权限? 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 OPTIONQ该角色分配的用户可以对该数据库和其中的表执行GRANT/REVOKE语句? GRANT QPRIVILEGEQ? ON QOBJECTQ?Qobject_nameQ? TO ROLE QroleNameQ? WITH GRANT OPTION 只有一个带GRANT选项的特D权限的角色或者它的父U权限可以从其他角色解除q种权限。一旦下面的语句执行Q所有跟其相关的grant权限会被解除? REVOKE QRIVILEGEQ? ON QBJECTQ?Qbject_nameQ? FROM ROLE QroleNameQ? Hive目前不支持解除之前赋予一个角?WITH GRANT OPTION 的权限。要想移除WITH GRANT OPTION、解除权限,可以重新去除 WITH GRANT OPTIONq个标记来再ơ附权? SET ROLE Statement SET ROLE语句可以l当前会话选择一个角色之生效。一个用户只能启用分配给他的角色。Q何不存在的角色和当前用户不能使用的角色是不能生效的。如果没有用Q何角Ԍ用户会使用M一个属于他的角色的权限? 选择一个角色用: To enable a specific role: 使用所有的角色Q? To enable a specific role: 关闭所有角? SET ROLE NONE; SHOW Statement 昄当前用户拥有库、表、列相关权限的数据库Q? SHOW DATABASES; 昄当前用户拥有表、列相关权限的表Q? SHOW TABLES; 昄当前用户拥有SELECT权限的列Q? SHOW COLUMNS (FROM|IN) table_name [(FROM|IN) db_name]; 昄当前pȝ中所有的角色Q只有管理员用户可以执行Q: SHOW ROLES; 昄当前影响当前会话的角Ԍ SHOW CURRENT ROLES; 昄指定l的被分配到的所有角Ԍ只有理员用户和指定l内的用户可以执行) SHOW ROLE GRANT GROUP (groupName); SHOW语句可以用来昄一个角色被授予的权限或者显C色的一个特定对象的所有权限? 昄指定角色的所有被赋予的权限。(只有理员用户和指定角色分配到的用户可以执行Q。下面的语句也会昄M列的权限? SHOW GRANT ROLE (roleName); 昄指定对象的一个角色的所有被赋予的权限(只有理员用户和指定角色分配到的用户可以执行Q。下面的语句也会昄M列的权限? SHOW GRANT ROLE (roleName) on (OBJECT) (objectName); ----------------------------我也是有底线?----------------------------<img src ="http://www.aygfsteel.com/xzclog/aggbug/433353.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xzclog/" target="_blank">xzc</a> 2018-09-03 18:19 <a href="http://www.aygfsteel.com/xzclog/archive/2018/09/03/433353.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Python~码和解?/title><link>http://www.aygfsteel.com/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>http://www.aygfsteel.com/xzclog/archive/2018/05/18/433218.html</guid><wfw:comment>http://www.aygfsteel.com/xzclog/comments/433218.html</wfw:comment><comments>http://www.aygfsteel.com/xzclog/archive/2018/05/18/433218.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xzclog/comments/commentRss/433218.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xzclog/services/trackbacks/433218.html</trackback:ping><description><![CDATA[     摘要: Python 里面的编码和解码也就?nbsp;unicode ?nbsp;str q两UŞ式的怺转化。编码是 unicode -> strQ相反的Q解码就?nbsp;str -> unicode。剩下的问题是定何时需要进行编码或者解码了.关于文g开头的"~码指示"Q也是 # -*- codin...  <a href='http://www.aygfsteel.com/xzclog/archive/2018/05/18/433218.html'>阅读全文</a><img src ="http://www.aygfsteel.com/xzclog/aggbug/433218.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xzclog/" target="_blank">xzc</a> 2018-05-18 09:52 <a href="http://www.aygfsteel.com/xzclog/archive/2018/05/18/433218.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>kafka节点假死http://www.aygfsteel.com/xzclog/archive/2018/03/08/433087.htmlxzcxzcThu, 08 Mar 2018 08:35:00 GMThttp://www.aygfsteel.com/xzclog/archive/2018/03/08/433087.htmlhttp://www.aygfsteel.com/xzclog/comments/433087.htmlhttp://www.aygfsteel.com/xzclog/archive/2018/03/08/433087.html#Feedback0http://www.aygfsteel.com/xzclog/comments/commentRss/433087.htmlhttp://www.aygfsteel.com/xzclog/services/trackbacks/433087.html
一、前a
    早上醒来打开微信Q同事反馈kafka集群从昨天凌晨开始写入频J失败,赶紧打开电脑查看了kafka集群的机器监控,日志信息Q发现其中一个节点的集群负蝲从昨天凌晨突然掉下来了,和同事反馈的旉点大概一_于是乎就d服务器开始干zR?/div>
二、排?/div>
1、查看机器监控,看是否能大概定位是哪个节Ҏ异常
技术分?/div>
2、根据机器监控大概定位到其中一个异常节点,d服务器查看kafka日志Q发现有报错日志Qƈ且日志就停留在这个这个时间点Q?/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、查看kafkaq程和监听端口情况,发现都正常,玛假死?/div>
ps -ef |grep kafka        ## 查看kafka的进E?/div>
netstat -ntlp |grep 9092  ##9092kafka的监听端?、既然已l假MQ只能重启了
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日志Q在一index重徏之后Q上面的报错信息在疯狂的P最后谷歌一番,解决了该问题
三、解x案:
?/div>
/usr/local/kafka/binkafka-run-class.shL
-XX:+DisableExplicitGCd
-XX:MaxDirectMemorySize=512m在一ơ重启kafkaQ问题解冟?/div>


xzc 2018-03-08 16:35 发表评论
]]>Hive中reduce个数讑֮http://www.aygfsteel.com/xzclog/archive/2018/03/07/433084.htmlxzcxzcWed, 07 Mar 2018 03:21:00 GMThttp://www.aygfsteel.com/xzclog/archive/2018/03/07/433084.htmlhttp://www.aygfsteel.com/xzclog/comments/433084.htmlhttp://www.aygfsteel.com/xzclog/archive/2018/03/07/433084.html#Feedback1http://www.aygfsteel.com/xzclog/comments/commentRss/433084.htmlhttp://www.aygfsteel.com/xzclog/services/trackbacks/433084.html阅读全文

xzc 2018-03-07 11:21 发表评论
]]>
spark 累加历史 + l计全部 + 行{?/title><link>http://www.aygfsteel.com/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>http://www.aygfsteel.com/xzclog/archive/2017/10/23/432867.html</guid><wfw:comment>http://www.aygfsteel.com/xzclog/comments/432867.html</wfw:comment><comments>http://www.aygfsteel.com/xzclog/archive/2017/10/23/432867.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.aygfsteel.com/xzclog/comments/commentRss/432867.html</wfw:commentRss><trackback:ping>http://www.aygfsteel.com/xzclog/services/trackbacks/432867.html</trackback:ping><description><![CDATA[     摘要: spark 累加历史主要用到了窗口函敎ͼ而进行全部统计,则需要用到rollup函数 1  应用场景Q?  1、我们需要统计用LM用时长(累加历史Q?  2、前台展现页面需要对多个l度q行查询Q如Q品、地区等{?  3、需要展现的表格头如Q?产品?015-04?015-05?015-06 2 原始数据Q? product_code |event_date |dur...  <a href='http://www.aygfsteel.com/xzclog/archive/2017/10/23/432867.html'>阅读全文</a><img src ="http://www.aygfsteel.com/xzclog/aggbug/432867.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.aygfsteel.com/xzclog/" target="_blank">xzc</a> 2017-10-23 22:05 <a href="http://www.aygfsteel.com/xzclog/archive/2017/10/23/432867.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spark分析H口函数http://www.aygfsteel.com/xzclog/archive/2017/10/23/432866.htmlxzcxzcMon, 23 Oct 2017 14:04:00 GMThttp://www.aygfsteel.com/xzclog/archive/2017/10/23/432866.htmlhttp://www.aygfsteel.com/xzclog/comments/432866.htmlhttp://www.aygfsteel.com/xzclog/archive/2017/10/23/432866.html#Feedback0http://www.aygfsteel.com/xzclog/comments/commentRss/432866.htmlhttp://www.aygfsteel.com/xzclog/services/trackbacks/432866.html阅读全文

xzc 2017-10-23 22:04 发表评论
]]>
SparkSQL相关语句ȝhttp://www.aygfsteel.com/xzclog/archive/2017/10/23/432865.htmlxzcxzcMon, 23 Oct 2017 13:03:00 GMThttp://www.aygfsteel.com/xzclog/archive/2017/10/23/432865.htmlhttp://www.aygfsteel.com/xzclog/comments/432865.htmlhttp://www.aygfsteel.com/xzclog/archive/2017/10/23/432865.html#Feedback0http://www.aygfsteel.com/xzclog/comments/commentRss/432865.htmlhttp://www.aygfsteel.com/xzclog/services/trackbacks/432865.htmlSparkSQL相关语句ȝ

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.766U?br />in 80000?耗时78.827U?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是最单的兌操作Q两边关联只取交?
left outer join是以左表驱动Q右表不存在的key均赋gؓnullQ?br />right outer join是以双驱动Q左表不存在的key均赋gؓnullQ?br />full outer join全表兌Q将两表完整的进行笛卡尔U操作,左右表均可赋gؓ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);
可用以下两种方式替换Q?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两表q接Q如果B表存在重复数?br />当用JOIN ON的时候,A,B表会兌Z条记录,应ؓON上的条gW合Q?span class="Apple-converted-space"> 
而是用LEFT SEMI JOIN 当A表中的记录,在B表上产生W合条g之后p回,不会再l查找B表记录了Q?br />所以如果B表有重复Q也不会产生重复的多条记录?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四中数据导入方式
1Q?strong>从本地文件系l中导入数据到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作ؓ了分区字D,分区Q在Hive中,表的每一个分区对应表下的相应目录Q所有分区的数据都是存储在对应的目录中?br />比如wyp表有dt和city两个分区Q则对应dt=20131218city=BJ对应表的目录?user/hive/warehouse/dt=20131218/city=BJQ?br />所有属于这个分区的数据都存攑֜q个目录中?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;

Hiveq支持多表插?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.d一列ƈ增加列字D|?/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文g中的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文g
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(或新增该文g), ~辑如下格式内容
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

 

创徏一个自增序列表Q用row_number() over()增加序列?以供分页查询

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

 

 

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



xzc 2017-10-23 21:03 发表评论
]]>
վ֩ģ壺 | | ³ƶ| | | | | Ļ| | | Ԫ| | | | Ϫ| Ƿ| غ| ƽ| ʡ| ɽ| | ԭ| ɽ| ˹| | | | Ȫ| ֣| º| | | | | Դ| Դ| ƽ| | | ɳ| |