python—如何获取hive(hdfs)数据块,确保每个块是不同的

yzuktlbb  于 2021-05-17  发布在  Spark
关注(0)|答案(0)|浏览(350)

我在hdfs中有一个庞大的数据集。我需要把数据分块处理。
首先使用sql确定完整数据集中的行数是否可行:

select count(*) from my_table;

…然后用python把这个数字分成几个区间?

def intervals(parts, duration):
    part_duration = duration / parts
    return [(i * round(part_duration), (i + 1) * round(part_duration)) for i in range(parts)]

例如,如果我总共有一百万行:

intervals(3, 1000000)

这给了。。。

[(0, 333333), (333333, 666666), (666666, 999999)]

然后我可以使用sql获取这些特定的行号吗?
输入示例:

row     Col1      Col2.    Col3
 1        a         b        c
 2        a         b        c
 3        a         b        c
 4        a         b        c
 5        a         b        c
 6        a         b        c

预期产量:
返回区块1:

row     Col1     Col2    Col3
 1       a         b       c
 2       a         b       c

返回区块2:

row     Col1     Col2    Col3
 3       a         b       c
 4       a         b       c

返回块3:

row     Col1     Col2    Col3
 5       a         b       c
 6       a         b       c

我不确定hive是否能够获取特定的行号,并根据hdfs对数据的分区方式,确保数据块是真正不同的。是否有某种方法可以确保返回的每个块都是唯一的,以便我可以处理每个块?

暂无答案!

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

相关问题