Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon web services 从AWS粘合作业中引用配置单元视图_Amazon Web Services_Apache Spark_Hive_Aws Glue - Fatal编程技术网

Amazon web services 从AWS粘合作业中引用配置单元视图

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。所以在我的最终状态中,不再有蜂巢端点,只有胶水

我试图弄清楚如何将用例从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_表,如下所示

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的配置单元表中查询。临时视图可以实现与使用外部配置单元表相同的结果。所以是的,这是一个解决问题的方法,但不是精确的解决方案。