Python模块的相对导入和绝对导入

刚开始用Python写代码,对于import的方式不是很理解,尤其是导入上层包的模块时,经常会使用sys.path.append('..'),然后再import,很不优雅,所以花些时间全部梳理一遍。

首先需要明白明白两个概念模块,很多人也都了解,贴出runoob(页面跟W3C好像,他们有什么关系吗?)上给出的两个定义。

Read More

终端高效切换编码

在以前的时候,终端编码通通设置的都是UTF-8,即使有一两台远程机,因为有自主权也都是UTF-8编码,包括数据库表格,也都是统一UTF-8编码,不得不说这样统一以后非常方便,几乎也没有考虑过编码不同带来的烦恼。

来到公司工作一段时间后才发现,自己的开发机还好说,设置成UTF-8就可以了,保持原有惯例。然而,需要经常登录别的机器看任务跑代码就会发现乱码了,好吧,手动把终端(iTerm2)调到GBK,结束以后再调回来;然后过了没两天,会发现其他机器的Mysql表格也是GBK的,好吧还得暂调GBK。最大的问题还不在于麻烦,我一个终端下连接了多台服务器和数据库,编码都不统一,这可怎么办?

Read More

Python中解析命令行参数

Python中常用的获取命令行参数的方法有三种,分别可适用于不同的场景。

直接从sys.argv中获取

sys.agrv保存了命令行的参数列表,其中,sys.argv[0]保存的是脚本的名称,所以要获取自己传入的参数时,需要从第二个元素开始,参数的顺序与sys.argv中一致。

Read More

字符集、字符编码以及Python中编码的那些事

总会遇到乱码的问题,也总是按照网上的教程一步一步操作,解决的过程就像碰运气,从来没有总结过,再次遇到的时候还是不知道是什么问题,所以,花一点时间,总结一下。

字符集和字符编码

字符集是一个系统支持的抽象字符的集合。这个集合是有限集合,包括文字、标点和数字等,由于计算机内部全部都是数字存储,所以字符集本身也是一个符号与数字之间的映射关系,比如ASCII字符集中大写字母A的编号是65。存储或传输的时候计算机根据字符集将人能看懂的字符换算成计算机能看懂的数字,输出的时候再换算成人能看懂的字符。

Read More

d3-example-of-different-data-structures

Read More

就折腾到这儿吧

上上周从百度搜索部Rank组面试回来之后,就有点不安,三面的面试官直接告诉我这面的表现不好,让她很担心。说这句话分明是让我很担心,核心部门还是很值得期待的。一周都没有音信,想必是挂掉了,不曾想今天接到HR电话联系offer事宜,终于可以把心放肚子里了。

今年四月份的时候面了一次腾讯实习,不意外地终止在一面。回来之后那个惶恐啊,突然间发现以自身的能力什么工作都找不到,但同时还欠着小论文没写,刚换了题目还没有看文献,一下子都不知道该做什么了。接下来的几个月也是最痛苦的,东一棒槌西一榔头,压根没有主心骨。

Read More

Zeppelin 安装配置的一些问题

1.版本问题

Zeppelin 从0.6.1版本开始,默认是基于 Spark 2.x 和 Scala 2.11版本进行编译的,亲测 Zeppelin 0.6.2与 Spark 1.6.x 版本是不兼容的,导致 Saprk Interpreters 不能正确运行,如果需要安装在老版本上的,需要自己从源码编译,可以指定 Spark、Hadoop等版本参数,可以参考 http://zeppelin.apache.org/docs/snapshot/install/build.html ,如果是0.6.0版本,可与 Spark 1.6.x 之前的兼容运行。

Read More

Intellij IDEA 中调试 Spark Application

Spark 新手一名,同样也是 Scala 菜鸟,由于对这两个都不是特别熟悉,所以希望能在 IDE中 coding 和 debug,但是调试 Spark 程序和往常接触过的不一样,并且有一些观念上的错误,总结一下。

坑一:网络代理

程序写好以后,可以直接 debug 的(只限于 spark.master= local[*]的场景),由于使用了 ShadowSocks 全局代理翻墙,最初一直报错,Google 了好大会儿也没找到问原因,后来才猛的想起代理还开着,而 hosts 文件中恰恰没有 localhost 映射到127.0.0.1中,修改 hosts,解决。直接 debug 可以使用较小的数据进行测试,不是非得网上众多教程那样得 sbt package -> spark-submit -> Remote Debug 那样不方便。

Read More

Spark 连接 Phoenix 配置

2017年1月3号更新:

在Spark 2.x版本中更改了DataFrame的定义,而Phoenix4.9及以前(4.10后官方版本会修复)是在Spark1.x的环境下开发的,因此如果使用Spark2.x的环境,不能正常使用Phoenix Spark Interprter, 具体问题可以参考 https://issues.apache.org/jira/browse/PHOENIX-3333,这里给出本人利用链接中的补丁编译后的phoenix,其他参考1.x版本中的配置方式即可。

Read More

pyenv安装多版本 Python 过程中提示警告

在使用 pyenv 安装多版本 Python 时,有时候会遇到警告

1
2
3
WARNING: The Python bz2 extension was not compiled. Missing the bzip2 lib?
WARNING: The Python readline extension was not compiled. Missing the GNU readline lib?
WARNING: The Python sqlite3 extension was not compiled. Missing the SQLite3 lib?

Read More