1

我正在尝试将 1000 亿个多维时间序列数据点从具有以下格式的 CSV 文件加载到 KairosDB:

时间戳 value_1 value_2 .... value_n

我试图在官方文档中找到一种快速加载方法,这就是我目前进行插入的方式(我的代码库在 Python 中):

f = open(args.file, "r")
# Insert
i = 0
with tqdm(total=int(rows)) as pbar:
    while i < len(range(rows)):   
        data = []
        batch_size = 65000 / column
        while i < len(range(rows)) and batch_size > 0:
            batch_size -= 1
            # print(batch_size)
            i += 1
            values = f.readline()[:-1].split(" ")
            t = (get_datetime(values[0])[0] - datetime(1970, 1, 1)).total_seconds() * 1000
            t = int(t)
            for j in range(column):
                    data.append({
                            "name": "master.data",
                            "datapoints": [[t, values[j + 1]]],
                            "tags": {
                                    "dim": "dim" + str(j)
                            }
                    })    
        r = requests.post("http://localhost:8080/api/v1/datapoints", data = json.dumps(data))
        pbar.update(65000 / column)
pbar.close()

如上面的代码所示,我的代码正在读取数据集 CSV 文件并准备 65000 个数据点的批次,然后使用requests.post.

但是,这种方法效率不高。事实上,我正在尝试加载 1000 亿个数据点,这比预期的要长,仅加载 300 万行,每行 100 列已经运行了 29 小时,还有 991 小时要完成!!!!

在此处输入图像描述

我确信有更好的方法将数据集加载到 KairosDB 中。对更快的数据加载有什么建议吗?

4

0 回答 0