Операция не разрешена: СОХРАНЕННЫЙ улей на свече sql - PullRequest
0 голосов
/ 06 марта 2020

Я пытаюсь установить соединение между Hive и DynamoDB через Spark. Для этого мне нужно выполнить этот код:

sparkSession.sql("create external table test (id string) STORED BY 'org.apache.hadoop.hive.dynamodb.DynamoDBStorageHandler' TBLPROPERTIES('dynamodb.table.name'='testdb','dynamodb.column.mapping'='id:id')")

Но у меня ошибка:

ParseException: u"\nOperation not allowed: STORED BY(line 1, pos 111)

Я где-то читал, что STORED BY не поддерживается в Spark. Есть ли альтернативный метод? Это всегда не поддерживается? спасибо

1 Ответ

1 голос
/ 06 марта 2020

Вот выдержка из Spark Docs :

Обратите внимание, что обработчик хранилища Hive еще не поддерживается при создании таблицы, вы можете создать таблицу с помощью обработчика хранилища в Hive и используйте Spark SQL для его чтения.

Как видите, Spark не может создавать таблицы StorageHandler Hive, но может читать уже существующую.

Решение можно создать определение таблицы непосредственно в Hive (используя beeline , hive или любой другой клиент JDB C по вашему выбору), и вы все равно сможете читать таблицу в любая Spark с поддержкой Hive (т. е. spark.sql("select * from test")).

...