Hadoop 如何在蜂巢、黑斑羚或Spark中转换数据?
这是我在SAS中熟悉的方式Hadoop 如何在蜂巢、黑斑羚或Spark中转换数据?,hadoop,apache-spark,hive,transpose,Hadoop,Apache Spark,Hive,Transpose,这是我在SAS中熟悉的方式 data long1 ; input famid year faminc ; cards ; 1 96 40000 1 97 40500 1 98 41000 2 96 45000 2 97 45400 2 98 45800 3 96 75000 3 97 76000 3 98 77000 ; run; proc transpose data=long1 out=wide1 prefix=faminc; by famid ;
data long1 ;
input famid year faminc ;
cards ;
1 96 40000
1 97 40500
1 98 41000
2 96 45000
2 97 45400
2 98 45800
3 96 75000
3 97 76000
3 98 77000
;
run;
proc transpose data=long1 out=wide1 prefix=faminc;
by famid ;
id year;
var faminc;
run;
proc print data = wide1;
run;
Obs famid _NAME_ faminc96 faminc97 faminc98
1 1 faminc 40000 40500 41000
2 2 faminc 45000 45400 45800
3 3 faminc 75000 76000 77000
如何使用蜂巢/黑斑羚或Spark实现类似的功能?
这里的关键点是,在转置后将成为列的唯一行值没有提前定义。
本质上,当年份为x时,我不能使用一系列的案例,然后faminc else 0
,因为有一次我可以有某些年份值,有时我可以有其他年份值,并且不是所有的famid都有全年值。我找到了这个
pivot操作符已添加到Spark dataframe API,是Spark 1.6的一部分
有关详细信息,请参阅