У меня есть 2 таблицы в моем Amazon DynamoDB: Элементы и контейнеры. Иерархия заключается в том, что один контейнер может содержать несколько элементов.
Таким образом, элементы выглядят так: uuid, timestamp, container_id, data.
Я хочу объединить данные из всех элементов в соответствующем контейнере, например:
элементы:Как скопировать данные в другую таблицу без перезаписывания существующих столбцов
| uuid | container_id | data |
| 1 | 1 | 100 |
| 2 | 1 | 150 |
| 3 | 2 | 100 |
Так что я хочу получить в контейнеры таблице:
| uuid | data |
| 1 | 250 |
| 2 | 100 |
Таким образом, используя улей, я написал сценарий (который начинается с кластера EMR):
CREATE EXTERNAL TABLE element (`uuid` string, `container_id ` bigint, `data` double) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES("dynamodb.table.name"="Elements", "dynamodb.column.mapping"="uuid:UUID,container_id:container_id,data:data");
CREATE EXTERNAL TABLE container (`uuid` string, `data` double) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES("dynamodb.table.name"="Containers", "dynamodb.column.mapping"="uuid:UUID,data:data");
INSERT INTO TABLE container SELECT container_id as `uuid` sum(`data`) as `data` FROM element WHERE container_id IS NOT NULL GROUP BY container_id;
И он работает хорошо, но теперь мне нужно написать e некоторые дополнительные данные в таблицу контейнеров, поэтому это должно быть как uuid, data, another_data
. Но когда я выполняю скрипт выше, он перезаписывает все another_data
(которые не указаны во внешней таблице). Я стараюсь много вариантов, но не могу найти решение.
при добавлении дополнительного столбца в таблицу контейнеров, какое значение имеет этот столбец взять на уже существующие данные? – madhu
, добавляя новые данные, это не высокопроизводительная работа, поэтому я делаю это через java и 'amazonDynamoDBClient.updateItem (tableName, key, attributeUpdates)', и на самом деле он помещает некоторые данные без какого-либо влияния на другие данные. –