hive/sql查询

bzzcjhmw  于 2021-06-03  发布在  Hadoop
关注(0)|答案(0)|浏览(304)

我需要对模式如下的数据执行漏斗分析:

A(int X) Matched_B(int[] Y) Filtered_C(int[] Z)

哪里, A 指可以发送多个请求的客户端id。数据管道中每个请求只存储客户端id,而不是存储请求id(我不知道为什么) Matched_B 指为查询返回的项的列表。 Flitered_C 是的子集 Matched_B 和指成功通过筛选器的项。
所有数据都存储在hdfs中的avro文件中。在hdfs中存储数据的qps约为12000。
我需要准备以下报告:
对于每个 (X,Y[i]) ,次数 Y[i] 出现在 Matched_B .
对于每个 (X,Y[i]) ,次数 Y[i] 出现在 Filtered_C .
基本上,我想知道这个任务是否只能使用配置单元执行?
目前,我正在考虑以下体系结构。

HDFS(avro_schema)--> Hive_Script_1 --> HDFS(avro_schema_1) --> Java Application --> HDFS(avro_schema_2) --> Hive_Script_2(external_table) --> result

哪里, avro_schema 是上面描述的模式。 avro_schema_1 由生成 Hive_Script_1 通过转换(使用 Lateral View explode(Matched_B )) avro_schema 具体描述如下:
A(int X) Matched_B_1(int Y) Filtered_C(int[] Z) avro_schema_2 由java应用程序生成,描述如下: A(int X) Matched_B(int Y) Matched_Y(1 if Y is matched, else 0) Filtered_Y(1 if Y is filtered, 0 otherwise) 最后,我们可以运行一个配置单元脚本来处理每天生成的事件的数据。
另一个架构可能是我们移除的 avro_schema_1 生成和直接处理 avro_schema 并生成结果。
但是,我希望避免为此任务编写java应用程序。有人能给我指出解决上述问题的方法吗?
我还想了解一些架构对这个问题的有效解决方案的看法。
注:请考虑qps(12000)提出解决方案。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题