Amazon web services 从AWS粘合作业中引用配置单元视图
我试图弄清楚如何将用例从EMR迁移到涉及配置单元视图的AWS Glue 在今天的EMR中,我有S3中镶木地板支撑的蜂巢外部表,我还有其他视图,比如创建视图蜂巢视图作为从外部表选择col,col=x 然后在EMR上的Spark中,我可以从hive_视图发出类似df=Spark.sqlselect*的语句来引用我的hive视图 我知道我可以使用Glue目录作为Hive metastore的替代品,但我正在尝试将Spark作业本身从EMR迁移到Glue。所以在我的最终状态中,不再有蜂巢端点,只有胶水 问题: 如何替换创建视图。。。语句,如果我不再有EMR群集来发出配置单元命令?等效的AWS Glue SDK调用是什么 如何从粘合作业中引用这些视图 到目前为止,我一直在尝试:使用bot3调用glue.create_表,如下所示Amazon web services 从AWS粘合作业中引用配置单元视图,amazon-web-services,apache-spark,hive,aws-glue,Amazon Web Services,Apache Spark,Hive,Aws Glue,我试图弄清楚如何将用例从EMR迁移到涉及配置单元视图的AWS Glue 在今天的EMR中,我有S3中镶木地板支撑的蜂巢外部表,我还有其他视图,比如创建视图蜂巢视图作为从外部表选择col,col=x 然后在EMR上的Spark中,我可以从hive_视图发出类似df=Spark.sqlselect*的语句来引用我的hive视图 我知道我可以使用Glue目录作为Hive metastore的替代品,但我正在尝试将Spark作业本身从EMR迁移到Glue。所以在我的最终状态中,不再有蜂巢端点,只有胶水
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的配置单元视图,并将Glue目录作为元存储-我在Glue目录中看到该视图,Spark SQL查询成功,但我无法从Glue作业中引用该视图。您可以像配置单元表Scala一样对其进行查询:
val dataDyf = glueContext.getSourceWithFormat(
connectionType = "s3",
format = "parquet",
options = JsonOptions(Map(
"paths" -> Array("s3://bucket/external/folder")
))).getDynamicFrame()
// Convert DynamicFrame to Spark's DataFrame and apply filtering
val dataViewDf = dataDyf.toDF().where(...)
dataViewDf.createOrReplaceTempView("hive_view")
val df = spark.sql("select * from hive_view")
你有没有在找这个?我已经看过那个文档了,我知道我可以将EMR集群的Hive元存储指向Glue。但我想做的是直接从Glue job中引用蜂巢视图。@wrschneider你找到解决方案了吗?我最近没有研究过这个问题,但我认为有一些变化允许Glue job像在EMR中一样直接从Spark使用Glue目录中的对象-请看我的另一个问题,我没有问这个问题临时视图。我问的是持久化配置单元视图,它可以在类似Spark的配置单元表中查询。临时视图可以实现与使用外部配置单元表相同的结果。所以是的,这是一个解决问题的方法,但不是精确的解决方案。