如何使 Hive 对 DynamoDB 进行并发读取?

问题背景

DynamoDB 创建了类似如下的表:

{
"accessid": "c63b88a3-1503-4c2c-a7c2-3a1ffde7bff9", // Primary key.
"date": "2018-12-12",
"when": "2018-12-12 17:22:15",
"context": "something"
}

这个表用来记录访问记录,以 accessid (随机字符串) 作为 Primary key. Date 记录当条记录的生成日期。

我们希望通过 Hive 每天将前一天的数据从 DynamoDB 备份到 S3 上,具体方法可参考文档[1].

hive> INSERT OVERWRITE TABLE  s3_table
    > SELECT * FROM ddb_table WHERE date="2018-12-12";

Dynamodb表里存放了很多天的数据,执行以上操作会消耗很长时间,如何能加快速度?比如让 Hive 进行并发读取?
继续阅读“如何使 Hive 对 DynamoDB 进行并发读取?”

Hive 去除 CSV 字段中的双引号

问题

在 AWS 中,可以开启详细账单的功能。开启详细账单后,AWS 每天会多次将详细的账单数据存入到指定的 S3 bucket 中[1]。
账单数据是一个 CSV 文件,示例如下:

"InvoiceID","PayerAccountId","LinkedAccountId","RecordType","ProductName","RateId","SubscriptionId","PricingPlanId","UsageType","Operation","AvailabilityZone","ReservedInstance","ItemDescription","UsageStartDate","UsageEndDate","UsageQuantity","Rate","Cost"
"Estimated","xxxxxxxxxxxx","xxxxxxxxxxxx","LineItem","Amazon Simple Queue Service","16850885","1846142824","1292565","CNN1-Requests-Tier1","GetQueueAttributes","","N","First 1,000,000 Amazon SQS Requests per month are free","2019-01-01 00:00:00","2019-01-01 01:00:00","60.0000000000","0.0000000000","0.0000000000"
"Estimated","xxxxxxxxxxxx","xxxxxxxxxxxx","LineItem","Amazon Simple Queue Service","16850885","1846142824","1292565","CNN1-Requests-Tier1","GetQueueUrl","","N","First 1,000,000 Amazon SQS Requests per month are free","2019-01-01 00:00:00","2019-01-01 01:00:00","180.0000000000","0.0000000000","0.0000000000"

第一行是每个字段的名字,后面的行是相应的数据。
继续阅读“Hive 去除 CSV 字段中的双引号”

旧金山-洛杉矶7天倒时差游记

这是一次因为特价机票而出发的旅行。

特价机票

美国一直都不在我的目的地列表里。7月的某一天,我搜了一下 北京-旧金山 的往返机票,含税2500元,截了个图给室友看看这世界居然有这么便宜的洲际机票。没想到室友心动了,诱惑我一起买票去一趟。然后我们就办起了美签,准备去一号公路自驾。

签证

美国签证的攻略网上大一堆。我填了DS-160表格,打印了银行流水和工作证明,约了早上7点半的面试。去到大使馆蒙了,前面排队的人都准备了非常多的资料,连全家福都带上了。面试官问我要个人简历,我说没有,随后得到一张绿色的字条,回头要发邮件补材料:个人简历,公司介绍,机票酒店预订单和行程单。好吧,要啥给啥。查询签证的状态是 Administrative Processing,就是传说中的被 Check 了。等了一个月,才拿到签证,一年有效期。
继续阅读“旧金山-洛杉矶7天倒时差游记”

Namespace 在 Kernel 里是怎么实现的?以 mount namespace 为例


有很多文章都介绍了在应用层面怎么调用 CLONE 的参数来进行 namespace 隔离,于是好奇 namespace 在 kernel 层面是怎么实现的,比如 kernel 需要做哪些改动来提供 namespace 的功能。


应用层面进行namespace隔离的方法

对于应用程序,例如 docker, 可以通过调用 clone(), unshare(), setns() 来对 namespace 进行操作。Coolshell 有几篇通俗易懂的文章可供详细了解[1].
继续阅读“Namespace 在 Kernel 里是怎么实现的?以 mount namespace 为例”

2018曼谷 - 带我妈去旅行


由于工作变动,空出来一周的时间,决定回趟家顺便带我妈去趟旅游。之前我妈说想去泰国,而我也想找个温暖点的地方。所以临时制定泰国旅行计划。

机票

要带家人出去旅游,就不能用穷游的那一套了。有这么些限制条件:
1. 我要先回家,跟我妈一起去。
2. 有行李箱托运,廉航可能会更贵。
3. 避开红眼航班。
继续阅读“2018曼谷 - 带我妈去旅行”

EC2两张网卡连接两个子网,分别关联EIP,其中一个EIP ping不通,怎么办?

问题


- 一个有两张网卡的 EC2 instance (RHEL7.5),每个网卡分别对应一个public subnet, 每个网卡也关联一个 Public IP.
- 从其他网络 ping 这两个 IP 地址,发现其中一个IP能ping通,另一个IP不能ping通。

[ec2-user@ip-172-31-30-14 ~]$ ping 52.80.82.70 -c2
PING 52.80.82.70 (52.80.82.70) 56(84) bytes of data.
64 bytes from 52.80.82.70: icmp_seq=1 ttl=63 time=1.71 ms
64 bytes from 52.80.82.70: icmp_seq=2 ttl=63 time=1.80 ms

[ec2-user@ip-172-31-30-14 ~]$ ping 52.81.2.166 -c2
PING 52.81.2.166 (52.81.2.166) 56(84) bytes of data.

--- 52.81.2.166 ping statistics ---
2 packets transmitted, 0 received, 100% packet loss, time 1004ms

继续阅读“EC2两张网卡连接两个子网,分别关联EIP,其中一个EIP ping不通,怎么办?”