[原创] Apache Pig解析JSON数据

JSON

查看更多Apache Pig的教程请点击这里

在大数据处理领域,JSON格式的数据非常常见,然而用Apache Pig读取JSON并正确取出其中的字段我觉得并不算方便(在某些情况下很容易写错),所以总结一下几个常见的JSON loader/UDF的用法。

假设有数据文件 1.txt,内容是一行JSON(为了简单,这里以一行为例):

{"items":[{"id":"111","name":"aaa","extra":{"k":"ttt","v":"uuu"}},{"id":"222","name":"bbb","extra":{"k":"rrr","v":"sss"}}]}

阅读更多

[原创] Charles Proxy抓包本地Java程序数据配置

charles proxy

查看Charles Proxy文章合集,请点击这里

Charles Proxy是一个HTTP代理/HTTP监视器/反向代理,它使开发人员能够查看其计算机和Internet之间的所有HTTP和SSL/HTTPS流量。这包括请求、响应和HTTP headers(其中包含cookie和缓存信息)。

话不多说,直接按如下步骤操作:
➤ 导出Charles的证书

在Charles界面上点击菜单导出 .pem 证书:

HelpSSL ProxyingSave Charles Root Certificate

把文档保存到 ~/charles.pem

阅读更多

[原创] 扩展VirtualBox虚拟机的磁盘空间(vdi文件)

宿主机:Ubuntu 16.04 LTS
虚拟机:Windows 10

VirtualBox虚拟机文件有很多种格式,我的是vdi格式,对应的磁盘空间是37GB(Win10系统里只有一个C盘),由于虚拟机里的空间不够用了,想把它扩展成45GB,并且在数据不丢失的情况下仍然保持“只有一个C盘”的状态。
下面是操作方法。

阅读更多

[原创] ssh连接Linux服务器时提示"Too many authentication failures"的解决办法

如果你用 用户名+密码 的方式第一次ssh连接一台Linux服务器,连不上并且报以下错误:
Received disconnect from xxx.xxx.xxx.xxx port 22:2: Too many authentication failures
Disconnected from xxx.xxx.xxx.xxx port 22
如果你确定不是因为你输入了太多次错误密码,那么产生这个问题的一个可能原因是:
在发起连接的机器(记为A)的 ~/.ssh 目录下放了太多密钥文件,当你连接一台新的服务器并且没有在 ~/.ssh/config 文件中做过特殊的配置时,默认会挨个尝试所有密钥文件,而这些密钥文件,都不是适配那台新服务器的,所以会连接失败。

阅读更多

[原创] 在腾讯云的轻量应用服务器Lighthouse上用Squid开启HTTP代理服务

前段时间我看到腾讯云的促销广告,其“轻量应用服务器”首年的费用才85元(配置:1核CPU,2GB内存,50GB磁盘,带宽4Mbps,流量包500GB/月),可谓相当便宜,于是入手一台,安装了Ubuntu系统,用于一些简单的测试场景。

轻量应用服务器(Lighthouse)是新一代面向中小企业和开发者的云服务器产品,具备轻运维、开箱即用的特点,适用于小型网站、博客、论坛、电商以及云端开发测试和学习环境等轻量级业务场景,相比传统云服务器更加简单易用,并通过一站式融合常用基础云服务帮助用户便捷高效的构建应用,是您使用腾讯云的最佳入门途径。 

阅读更多

[原创] 过劳死和穷死,你希望哪一个先来?(二)

努力活着」
当你有一个机会可以过上朝九晚五的轻松生活,我劝你考虑清楚要不要抓住,打鸡血并不适合每一个人。

♫ 前言
 

    当几位拼多多员工悲伤离世、拼多多退出央视春晚红包合作项目的新闻已经逐渐被人们淡忘,而郑爽代孕的新闻却飞遍大街小巷抓尽眼球的时候,你是否依旧还记得996的苦?

阅读更多

[原创] 过劳死和穷死,你希望哪一个先来?(一)

最近又有两位拼多多的员工去世,而这距离上一个商汤科技的一位技术岗员工英年早逝才刚过了几周。
你没看错,是两个拼多多的员工!其中最近的一个,是昨天(2021年1月9日)才跳楼自杀的!

拼多多的工作强度就不说了,只要你是一个互联网人,一定会听说有多可怕。996算什么?太小儿科了好吧?
拼多多希望员工是个“本分”的人:当拼多多的员工月工时达到300小时,其系统会显示“您已本分”。有没有觉得这个词让人特别不舒适?把人当没有感情的动物看待吗?
大家可以算一下除去休息日,每天要工作多少个小时?没达到这个时长的员工就是不“本分”?有没有刷新你的世界观人生观价值观?
2020年10月,拼多多董事长黄铮在公司5周年讲话时号召全员开启“硬核奋斗模式”,多位员工证实,买菜业务线的员工此前实行超级大小周(工作13天休一天)后来演变成全无休,每天工作时长约12小时。

阅读更多

[原创] 如何把别人共享的Google Drive目录完整拷贝到自己的Google Drive里

假设别人共享了一个Google云端硬盘(Google Drive)的目录,里面有很多大文件,你想把这个目录拷贝到自己的Google Drive里,那么,把它们全部下载到本地、再上传到自己的Google Drive里的做法未免太傻了一点——不仅速度慢,而且太耗流量。

不通过本地中转的“云拷贝”是一个好办法。
Google Drive Copy Folder就是这样一个Google Drive web app,它可以把你有权限访问的Google Drive目录,完整拷贝到你自己的Google Drive指定目录下。
但是要注意,这不是Google官方开发的工具,对安全性有顾虑的人请谨慎审视。

阅读更多

[原创] 使用Apache DataFu中的Coalesce()简化Apache Pig的三元运算符

查看更多Apache Pig的教程请点击这里

来看这个例子。有数据文件 1.txt,内容为:

a[\t][\t]c
[\t]f[\t]g
h[\t]k[\t]
[\t][\t][\t]
其中 [\t] 表示制表符(tab),并不是真的在文件中写了 [\t]
在Pig命令行交互模式下加载这个文件,并把其中为空(NULL)的列替换成一些数字:

A = LOAD '1.txt' AS (col1: chararray, col2: chararray, col3: chararray);
B = FOREACH A GENERATE (col1 IS NOT NULL ? col1 : '1') AS col1, (col2 IS NOT NULL ? col2 : '2') AS col2, (col3 IS NOT NULL ? col3 : '3') AS col3;
DUMP B;

输出:

(a,2,c)
(1,f,g)
(h,k,3)
(1,2,3)

代码非常简单:如果第一列col1为空则替换为1,如果第二列为空则替换为2,如果第三列为空则替换为3。
这里使用了三元运算符 ? : 来做这个判断,写法非常丑陋。

阅读更多

[原创] 推荐一款编写数学公式的国产神器:AxMath,可与LATEX双向转换

latex

我一直都很佩服那些可以直接用LATEX语法打出各种复杂数学公式的人,反正我是记不住,而且也真的不想去记LATEX语法。
比如这个公式:
cauchy's inequality

有的人能直接用LATEX手写出来:
\left( \sum_{i=1}^n{a_ib_i} \right) ^2\leqslant \left( \sum_{i=1}^n{a_{i}^{2}} \right) \left( \sum_{i=1}^n{b_{i}^{2}} \right) , a_i,b_i\in \mathbb{R}
这还算简单的了,更复杂的公式大神们都可以直接手写LATEX。
就问你服不服。
在下自愧脑容量不足。
所以当我要输入数学公式的时候,MathType这个功能强大的可视化数学公式编辑器就是我认为最方便易用的软件。

阅读更多

[原创] selenium-java的wait.until(ExpectedConditions)编译出错问题

代码示例:

wait.until(ExpectedConditions.alertIsPresent());
Alert alert = driver.switchTo().alert();
alert.accept();

在升级了pom.xml中的selenium-java版本到3.141.59后,代码编译出错了(挂在第一行),错误信息:

无法将类 org.openqa.selenium.support.ui.FluentWait<T>中的方法 until应用到给定类型;
[ERROR]   需要: java.util.function.Function<? super org.openqa.selenium.WebDriver,V>
[ERROR]   找到: org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.Alert>
[ERROR]   原因: 无法推断类型变量 V
[ERROR]     (参数不匹配; org.openqa.selenium.support.ui.ExpectedCondition<org.openqa.selenium.Alert>无法转换为java.util.function.Function<? super org.openqa.selenium.WebDriver,V>)

[原创]《使用 fastText 做中文文本分类》文章合集

本文描述了如何使用 fastText 对中文进行文本分类的过程,只有实操,基本没有理论。
以下按顺序编排。

 使用 fastText 做中文文本分类(1)
 使用 fastText 做中文文本分类(2)
 使用 fastText 做中文文本分类(3)
 使用 fastText 做中文文本分类(4)
 使用 fastText 做中文文本分类(5)Read More

[原创] 使用 fastText 做中文文本分类(5)

查看本系列文章合集,请看这里

前面说的模型训练、预测过程,是用 fastText 可执行程序完成的。fastText提供了Python的接口,同样的功能也可以用Python实现。如果数据量比较小,单机做文本分类没啥问题。但我的数据量比较大,几十G的文本数据,单机加载模型、预测分类太耗资源了,而且速度慢。
并行这种事嘛,交给Map-Reduce job来做是最合适不过了,不过,要在Hadoop集群上安装fastText的Python包是不可能的,所以我只能找一下,fastText的模型怎么用Java加载,从而在M-R job中并行地去做预测。

阅读更多