sql高效的多级连接配置单元查询

ewm0tg9j  于 2021-05-29  发布在  Hadoop
关注(0)|答案(0)|浏览(283)

我正在将t-sqludf转换为hivehql。udf使用递归cte,通过在“父”列上自联接来展平源表中的层次结构。为了摆脱递归,我做了多个左连接来创建扁平层次结构,即:

  1. select a.description, b.description, c.description, etc
  2. from sourcetable a
  3. left join sourcetable b on a.parent=b.id
  4. left join sourcetable c on b.parent=c.id
  5. etc.

最终的结果是,您可以按列列出层次结构的所有级别,例如熟悉的数据:

  1. Phoenix Arizona UnitedStates
  2. WashDC UnitedStates NULL
  3. Trenton NewJersey UnitedStates

注意层次结构是如何“参差不齐”的
在这个用例中没有过滤,我们正在处理所有记录。
我有十个层次要处理,它运行得相当慢。原来的cte运行不到一分钟,而hive中的新查询大约需要9分钟。10节点集群,1.5m记录,约1.5gb数据。我们只配置了mapreduce。
为这个用例优化的最佳方法是什么?我不认为分区会有帮助,因为我们没有过滤数据。扣球有帮助吗?我应该存储在记录id上,还是父id列上?
非常感谢,理查德

暂无答案!

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

相关问题