Awk multiple lines with 3rd column onto a single line?

I have a H U G E file with over 1million entries in it.
Looks something like this:

USER0001|DEVICE001|VAR1
USER0001|DEVICE001|VAR2
USER0001|DEVICE001|VAR3
USER0001|DEVICE001|VAR4
USER0001|DEVICE001|VAR5
USER0001|DEVICE001|VAR6
USER0001|DEVICE002|VAR1
USER0001|DEVICE002|VAR2
USER0001|DEVICE002|VAR3
USER0001|DEVICE002|VAR4
USER0001|DEVICE002|VAR5
USER0002|DEVICE003|VAR1
USER0002|DEVICE003|VAR2
USER0002|DEVICE003|VAR3
USER0002|DEVICE003|VAR4
USER0002|DEVICE003|VAR5
USER0002|DEVICE004|VAR1
USER0002|DEVICE004|VAR2
USER0002|DEVICE004|VAR3
USER0002|DEVICE004|VAR4
USER0002|DEVICE004|VAR5
USER0003|DEVICE005|VAR1
USER0003|DEVICE005|VAR2
USER0003|DEVICE005|VAR3
USER0003|DEVICE005|VAR4
USER0003|DEVICE005|VAR5
USER0003|DEVICE005|VAR6
USER0003|DEVICE006|VAR1
USER0003|DEVICE006|VAR2
USER0003|DEVICE006|VAR6

I would like a way to output only the uniq veriables onto a single line like so:

USER0001|DEVICE001|VAR1|VAR2|VAR3|VAR4|VAR5|VAR6
USER0001|DEVICE002|VAR1|VAR2|VAR3|VAR4|VAR5
USER0002|DEVICE003|VAR1|VAR2|VAR3|VAR4|VAR5
USER0002|DEVICE004|VAR1|VAR2|VAR3|VAR4|VAR5
USER0003|DEVICE005|VAR1|VAR2|VAR3|VAR4|VAR5|VAR6
USER0003|DEVICE006|VAR1|VAR2|VAR6

Is this doable with awk or do I need to use perl array?

nawk 'BEGIN {FS="|"}END{for(r in _)print r FS _[r]}{idx=$1 FS $2;_[idx]=_[idx]?_[idx] FS $3:$3}' myFile

okay that's awesome, I never expected it to be a one liner!
I sure would like to learn how you determined nawk was the best tool for this job.

I know I can rtfm and figure this out but if possible, I sure would appreciate a translation of how FS and idx play into this final solution :eek:

Or is that outside the realm of these forums?

awk -F "|" '{arr[$1"|"$2]=arr[$1"|"$2]"|"$3} END {for(i in arr) print i"|" arr}' filename
open FH,"<a.txt";
while(<FH>){
	tr/\n//d;
	my @tmp=split("[|]",$_);
	$key=$tmp[0]."|".$tmp[1];
	if(exists $hash{$key}){
		$hash{$key}=sprintf("%s|%s",$hash{$key},$tmp[2]);
	}
	else{
		$hash{$key}=$tmp[2];
	}
}
close FH;
for $key (sort keys %hash){
	print $key,"|",$hash{$key},"\n";
}