我想了解在标准的hadoop map-reduce和spark中收集作业执行统计信息的最佳实践。
1。 hdfs中的许多文件(每个导向器,即dataset1,dataset2等,是来自第3点的数据集的名称)
/user/tester/dataset1/part-0000*.avro
/user/tester/dataset2/part-0000*.avro
/user/tester/dataset3/part-0000*.avro
/user/tester/dataset4/part-0000*.avro
2。每个文件都包含一个带有~1000属性的avro记录
| id | attr_1 | attr_2 | attr_3 | ... | attr_N |
----------------------------------------------------
| 1 | val_1_1 | val_1_2 | val_1_3 | ... | val_1_N |
| 2 | val_2_1 | val_2_2 | val_2_3 | ... | val_2_N |
| 3 | val_M_1 | val_M_2 | val_M_3 | ....| val_M_N |
3。有一个配置文件,其中包含哪些属性/列以及从哪个数据集中获取以及如何过滤出给定数据集的信息
<datasets>
<dataset>
<id>dataset1</id>
<attributes>
<attribute>attr_1</attribute>
<attribute>attr_3</attribute>
</attributes>
<filter>attr_1 gt 50 and attr_3 eq 100</filter>
</dataset>
<dataset>
<id>dataset2</id>
<attributes>
<attribute>attr_2</attribute>
<attribute>attr_5</attribute>
<attribute>attr_8</attribute>
</attributes>
<filter>attr_2 gteq 71</filter>
</dataset>
...
</datasets>
如果
,计算此类统计信息的最佳方式是什么?Hadoop保证通过作业完成,即使
,也会执行一次计数器更新Hadoop计数器are not intended用于统计。
关于Spark,