Как создать внешнюю таблицу для DynamoDB на Hive 3.1 - PullRequest
0 голосов
/ 22 апреля 2020

Я хотел бы знать, возможно ли иметь внешнюю таблицу, указывающую на таблицу DynamoDB на AWS, используя Hive. Я не использую AWS EMR, я использую стек oop, настроенный через Apache Ambari.

Версия Hive: Hive 3.1.0.3.1.4.0-315

То, что я сделал: загрузил JAR-файл EMR Dynamo-Hive соединителя непосредственно из репозитория maven: https://mvnrepository.com/artifact/com.amazon.emr

Я загрузил все JARS в hive.aux.jars. путь:

emr-dynamodb-hadoop-4.12.0.jar
emr-dynamodb-hive-4.12.0.jar
emr-dynamodb-tools-4.12.0.jar
hive1.2-shims-4.12.0.jar
hive1-shims-4.12.0.jar
hive2-shims-4.12.0.jar
hive2-shims-4.15.0.jar
shims-common-4.12.0.jar
shims-loader-4.12.0.jar

Но когда я пытаюсь создать таблицу с:

CREATE EXTERNAL TABLE dynamo_LabDynamoHive
    (id double, nome string)
STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' 
TBLPROPERTIES (
    "dynamodb.table.name" = "LabDynamoHive", 
    "dynamodb.column.mapping" = "id:id,nome:nome"
);

я получаю следующую ошибку:

INFO  : Starting task [Stage-0:DDL] in serial mode
ERROR : FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Shim class for Hive version 3.1.1000 does not exist
INFO  : Completed executing command(queryId=hive_20200422142624_6ebabdc8-8942-4025-84a8-411505d20895); Time taken: 0.203 seconds
Error: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. java.lang.RuntimeException: Shim class for Hive version 3.1.1000 does not exist (state=08S01,code=1)

Я знаю, что я не загружать JAR-файл Shims для Hive 3, но я хотел бы знать, пытался ли кто-нибудь из вас попытаться использовать внешнюю таблицу с DynamoDB и использовать Hive 3 вне EMR.

Любая помощь или указания будут с благодарностью!

1 Ответ

0 голосов
/ 23 апреля 2020
Проблема

, по-видимому, в том, что исходный код этого разъема EMR несколько устарел, и в нем отсутствует поддержка Hive 3.x, недавно представленная AWS для EMR 6.0.

Однако вы можете найти работающую реализацию 3.1 здесь, разветвленный от официального разъема EMR: https://github.com/ramsesrm/emr-dynamodb-connector

Выполните следующие шаги установки: 1- скомпилируйте указанный код (чистый пакет mvn) 2 - установите 3 файла JAR в hive.aux. jars.path вместе с JAR-файлами aws - java -sdk-core и aws - java -sdk-Dynamodb из AWS (JAR-файлы shim не требуются), всего 5.

Вот и все. Не забудьте указать регион как TBLPROPERTIES, если вы не используете США по умолчанию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...