Я пытаюсь выяснить, как перенести сценарий использования из EMR в AWS Glue с использованием представлений Hive.
В EMR сегодня у меня есть внешние таблицы Hive, поддерживаемые Parquet в S3, и у меня есть дополнительныепредставления типа create view hive_view as select col from external_table where col = x
Затем в Spark на EMR я могу выдавать операторы типа df = spark.sql("select * from hive_view")
для ссылки на представление Hive.
Я знаю, что могу использовать каталог Glue в качествевместо метастафа Hive, но я пытаюсь перенести саму работу Spark из EMR в Glue.Так что в моем конечном состоянии больше нет конечной точки Hive, только Клей.
Вопросы:
Как заменить оператор create view ...
, если у меня больше нет кластера EMR для выдачи команд Hive?Что такое эквивалентный вызов AWS Glue SDK?
Как мне ссылаться на эти виды из задания Glue?
То, что я пробовал до сих пор: используя boto3
для вызова glue.create_table
следующим образом
glue = boto3.client('glue')
glue.create_table(DatabaseName='glue_db_name',
TableInput = {'Name': 'hive_view',
'TableType': 'VIRTUAL_VIEW',
'ViewExpandedText': 'select .... from ...'
})
Я вижу объект, созданный в каталоге Glueно классификация отображается как «Неизвестно», и ссылки в задании не выполняются с соответствующей ошибкой:
py4j.protocol.Py4JJavaError: An error occurred while calling o56.getCatalogSource. :
java.lang.Error: No classification or connection in bill_glue_poc.view_test at ...
Я подтвердил, что могу использовать представления Hive с Spark в EMR с каталогом Glue в качестве метастора -- Я вижу представление в каталоге Glue, и запросы Spark SQL выполняются успешно, но я не могу ссылаться на представление из задания Glue.