aws 胶水 HiveContext 访问胶水 DataCatalog
Posted
技术标签:
【中文标题】aws 胶水 HiveContext 访问胶水 DataCatalog【英文标题】:aws glue HiveContext access glue DataCatalog 【发布时间】:2020-02-10 16:37:04 【问题描述】:我可以从具有glueContext 的粘合作业中读取在粘合数据目录中定义的表。 但是,如果我想使用 hiveContext 读取完全相同的表,我会收到一条错误消息,指出它找不到该表。
在我看来,HiveContext 无法访问粘合数据目录。
你知道在胶水作业配置中插入什么(编辑作业->作业参数->“--conf xyz”)以确保HiveContext可以找到和访问胶水数据目录中的表吗?
我想执行以下代码:
# import libs
from pyspark.context import SparkContext
from pyspark.sql.functions import *
from pyspark.sql.types import *
from pyspark.sql import HiveContext
# create sparkContext and HiveContext
sc = SparkContext()
hc = HiveContext(sc)
# read table from glue data catalogue
df = hc.table('glue_db.glue_table').persist()
上面的代码返回如下错误信息:
pyspark.sql.utils.AnalysisException: u"找不到表或视图:
glue_db
.glue_table
;;\n'UnresolvedRelationglue_db
.glue_table
\n"
我已经尝试过 spark2.2 和 spark2.4 的 spark 版本
非常感谢!
【问题讨论】:
我在使用最新版本的 EMR 时遇到了这样的问题。我不得不回到 5.26.0。我不确定你的情况,但试试看。 【参考方案1】:试试这个
from awsglue.context import GlueContext
glueContext = GlueContext(sc)
spark = glueContext.spark_session
df= spark.sql(“select * from glue.table”)
或者直接从创建你的 spark 会话开始并完全绕过胶水。
只要您选中了允许将胶水目录用作 hive 元存储的框
【讨论】:
以上是关于aws 胶水 HiveContext 访问胶水 DataCatalog的主要内容,如果未能解决你的问题,请参考以下文章
如何在 aws 胶水中设置特定的压缩值?如果可能,可以在 aws 胶水中手动确定压缩级别和分区吗?
使用 pyspark aws 胶水时显示 DataFrame