我试图弄清楚如何将一个用例从emr迁移到涉及hive视图的aws glue。
在今天的emr中,我在s3中有一个由parquet支持的hive外部表,我还有其他视图,如 create view hive_view as select col from external_table where col = x
然后在电子病历上的spark,我可以发表如下声明 df = spark.sql("select * from hive_view")
引用我的配置单元视图。
我知道我可以使用glue目录作为hivemetastore的替代品,但是我正在尝试将spark作业本身从emr迁移到glue。所以在我的最终状态下,不再有Hive端点,只有胶水。
问题:
我该如何更换 create view ...
语句,如果我不再有一个emr集群来发出配置单元命令?等价的aws glue sdk调用是什么?
如何从粘合作业中引用这些视图?
到目前为止我尝试的是:使用 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 ...
我已经验证了我可以在emr中使用带有spark的hive视图,并将glue catalog作为metastore——我在glue catalog中看到视图,spark sql查询成功,但是我无法从glue job中引用视图。
1条答案
按热度按时间ntjbwcob1#
您可以在spark中创建临时视图,并像配置单元表(scala)一样进行查询: