Загрузить данные в массив улья

Ниже приведен код с использованием lambdas

#include "stdafx.h"
#include 
#include 

using namespace std;

struct MyStruct
{
    int key;
    std::string stringValue;

    MyStruct(int k, const std::string& s) : key(k), stringValue(s) {}
};

int main()
{
    std::vector < MyStruct > vec;

    vec.push_back(MyStruct(4, "test"));
    vec.push_back(MyStruct(3, "a"));
    vec.push_back(MyStruct(2, "is"));
    vec.push_back(MyStruct(1, "this"));

    std::sort(vec.begin(), vec.end(), 
        [] (const MyStruct& struct1, const MyStruct& struct2)
        {
            return (struct1.key < struct2.key);
        }
    );
    return 0;
}

0
задан user3422290 1 March 2019 в 19:54
поделиться

1 ответ

Он - код, который я использовал. В подходе я использовал python для очистки перед переходом к HQL-запросам. Таким образом, после выполнения некоторых шагов спора, у меня есть файл как этот ниже (сохраненный без indices и headers) в моей локальной файловой системе, так как это небольшой файл:

import pandas as pd
import numpy as np 

    Name  devicename number
0  David  SMARTPHONE      6
1           COMPUTER      3
2             LAPTOP      1

Затем временная таблица [ 116] создается и заполняется данными из LFS или HDFS:

create table tempt
(
name       string,
devicename string,
number     int
)
row format delimited 
FIELDS TERMINATED BY ',';
load data local inpath '/path_to_file' overwrite into table tempt;

select * from tempt;
+--------------------+--------------------------+----------------------+--+
| tempt.name         | tempt.devicename         | tempt.number         |
+--------------------+--------------------------+----------------------+--+
| David              | SMARTPHONE               | 6                    |
|                    | COMPUTER                 | 3                    |
|                    | LAPTOP                   | 1                    |
+--------------------+--------------------------+----------------------+--+

А теперь

Insert overwrite table user_device
select name,
array(named_struct("devicename",devicename,"number",number)) from tempt;

select * from user_device;

и вывод теперь такой, как вы ожидали.

+-----------------+-------------------------------------------+--+
|user_device.name |            user_device.devices            |
+-----------------+-------------------------------------------+--+
| David           | [{"devicename":"SMARTPHONE","number":6}]  |
|                 | [{"devicename":"COMPUTER","number":3}]    |
|                 | [{"devicename":"LAPTOP","number":1}]      |
+-----------------+-------------------------------------------+--+

Ура!

0
ответ дан Laenka-Oss 1 March 2019 в 19:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: