Hadoop 当满足特定条件时,如何逐行迭代配置单元表并计算度量?

Hadoop 当满足特定条件时,如何逐行迭代配置单元表并计算度量?,hadoop,hive,Hadoop,Hive,我的要求如下: 我正在尝试将MS Access表宏循环转换为用于配置单元表。名为trip\u details的表格包含卡车进行的特定行程的详细信息。卡车可以在多个位置停车,停车类型由一个名为type\u of\u trip的标志指示。此列包含诸如到达、离开、装载等值 最终目的是计算每辆卡车的停留时间(卡车在开始另一次行程之前需要多长时间)。为了计算这一点,我们必须逐行迭代表并检查行程类型 一个典型的例子如下所示: 文件结束时执行以下操作: 将第一行存储在变量中 移到第二行 如果行程类型=到达:

我的要求如下:

我正在尝试将MS Access表宏循环转换为用于配置单元表。名为
trip\u details
的表格包含卡车进行的特定行程的详细信息。卡车可以在多个位置停车,停车类型由一个名为
type\u of\u trip
的标志指示。此列包含诸如
到达
离开
装载
等值

最终目的是计算每辆卡车的停留时间(卡车在开始另一次行程之前需要多长时间)。为了计算这一点,我们必须逐行迭代表并检查行程类型

一个典型的例子如下所示:

文件结束时执行以下操作:

  • 将第一行存储在变量中
  • 移到第二行
  • 如果行程类型=到达:
    移到第三排
  • 如果跳闸类型=结束跳闸:
    存储第三行
    取时间戳的差值计算驻留时间
  • 将行追加到输出表中
  • 结束

    在蜂巢中解决这个问题的最佳方法是什么

    我尝试检查配置单元是否包含循环的关键字,但找不到关键字。我想用一个shell脚本来做这件事,但需要关于如何实现这一点的指导

    我不能透露全部数据,但可以在评论部分提出任何问题

    输入

    行程ID行程类型时间戳位置

    1         Departure       28/5/2019 15:00      Warehouse  
    1         Arrival         28/5/2019 16:00      Store  
    1         Live Unload     28/5/2019 16:30      Store  
    1         End Trip        28/5/2019 17:00      Store  
    
    1        Warehouse        Store                2 hours
    
    预期产出

    行程ID起点位置终点位置停留时间

    1         Departure       28/5/2019 15:00      Warehouse  
    1         Arrival         28/5/2019 16:00      Store  
    1         Live Unload     28/5/2019 16:30      Store  
    1         End Trip        28/5/2019 17:00      Store  
    
    1        Warehouse        Store                2 hours
    

    您不需要为此循环,使用SQL查询的强大功能

    将时间戳转换为秒(使用指定的格式
    'dd/MM/yyyy HH:MM'
    ),计算每次行程id的最小值和最大值,考虑类型,减去秒,将秒差转换为
    'HH:MM'
    格式或:

    结果:

    trip_id origin_location destination_location    dwell_time  
    1   Warehouse   Store   02:00   
    

    混淆数据,并根据问题输入的相同内容提供输入示例和所需输出。如果仍然不干净,请告诉我。我不是专家。据我所知,您需要按顺序传递数据。但是Hadoop是一个分布式数据库,所以数据不应该存储在一台机器上,因此for循环没有意义。顺便说一句,即使在sql中,通常也不能保证数据的顺序,我认为您也不能依赖Hadoop中的任何顺序。@code\u请参见此处的测试: