小编lar*_*sen的帖子

Amazon Elastic Map Reduce用于分析s3日志

我正在使用EMR来分析web nginx日志.但我需要处理日志,以便它可以分为行和列,以便于查询.因此,我按以下方式制作了两个表 - rawlog,processedlog:

create table rawlog(line string)
row format delimited fields terminated by '\t' lines terminated by '\n'
LOCATION 's3://istreamanalytics/logs/';

CREATE EXTERNAL TABLE processedlog (
day string,
hour int,
playSessionId string
)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' LINES TERMINATED BY '\n';
Run Code Online (Sandbox Code Playgroud)

并为可以进行转换的hive添加了一个ruby脚本,脚本如下:

#!/usr/bin/env ruby

mon={"Jan" => '01',"Feb" => '02',"Mar" => '03',"Apr" => '04',"May" => '05',"Jun" =>    '06',"Jul" => '07',"Aug" => '08',"Sep" => '09',"Oct" => '10',"Nov" => '11',"Dec" => '12'}

STDIN.each_line do |line|
if line =~ /(\d+)\/(\w+)\/(\d+):(\d+):\d+:\d+ \+\d+] …
Run Code Online (Sandbox Code Playgroud)

hive transform amazon-s3 amazon-web-services elastic-map-reduce

6
推荐指数
1
解决办法
1106
查看次数

正则表达式相当于chomp

我已经看到某处而不是在perl中使用chomp我们可以使用一些正则表达式来实现相同的任务.任何人都可以告诉正则表达式将在perl中遇到chomp

提前致谢

regex perl

5
推荐指数
2
解决办法
904
查看次数

在Perl子例程中定义局部临时变量的位置?

我花了太长时间才使用警告; 严格 在Perl,但现在我做了,我看到了优点.

我还不确定的一件事是何时定义一个临时变量.这似乎是一件微不足道的事情,但我运行了很多蒙特卡罗模拟,其中失去一点时间加起来超过10000次迭代.我一直懒得在更快的模拟上使用严格/警告,但它们变得更加复杂,所以我真的需要.

所以(切掉代码来计算东西)我想知道是否

sub doStuff
{
  my $temp;
  for my $x (1..50)
  {
    $temp = $x**2;
  }
  for my $x (1..50)
  {
    $temp = $x**3;
  }
}
Run Code Online (Sandbox Code Playgroud)

要么

sub doStuff
{
  for my $x (1..50)
  {
    my $temp = $x**2;
  }
  for my $x (1..50)
  {
    my $temp = $x**3;
  }
}
Run Code Online (Sandbox Code Playgroud)

效率更低/更高,或者如果违反了一些我还不知道的Perl编码.

perl scope

3
推荐指数
1
解决办法
273
查看次数