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