hadoop的perl哈希/数组实现

vktxenjb  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(349)

我是perl新手,正在尝试找出实现这一点的最佳方法,但目前还不确定语法。
我的脚本现在正在从hdfs读取一个文件,该文件包含许多可能的键、值对。
例如,假设我可以有a,b,c,d,e的键
我正在读取的文件将以换行分隔,如下所示:

A,50
C,30

在我的脚本中,我想读取文件并将变量赋给相应的值,如果任何变量不存在,我想将它们赋给零值。
所以,在脚本结束时,我想有一个输出,输出如下:

A=50,B=0,C=30,D=0,E=0

由于我对perl的知识有限,我想知道如何设置最好的循环来收集这样的信息?我有读取文件的功能,但没有将度量收集到某种数组或散列分组中的功能。

jk9hmnmh

jk9hmnmh1#

use strict;
use warnings; 

my @keys = qw(A B C D E);     
open my $fh, '<', $filename_from_hdfs
   or die "$!";

my %mapping;
while ( my $line = readline($fh) ) {
   chomp($line);
   my ($key, $value) = split /,/, $line; 

   $mapping{$key} = $value; 
}

# zero out keys with no value

$mapping{$_} //= 0 foreach @keys; 

print join(',', map { "$_=$mapping{$_}" } sort keys %mapping), "\n";
h7appiyu

h7appiyu2#

my %result;

# assign zero to all keys

for my $key ('A' .. 'E')
{
 $result{$key} = 0;
}

# open file, read each line one by one

# Split each read line from file in ($key, $value).

result{$key} = $value;

# After finishing reading the file, traverse %result and output key, values

相关问题