AWS Glue 无法访问输入数据集

问题描述 投票:0回答:3

我在 Glue / Athena 中注册了一个数据集,称之为

my_db.table
。我可以通过 Athena 查询,一切似乎都按顺序进行。

我正在尝试在胶水作业中使用此表,但收到以下相当不透明的错误消息:

py4j.protocol.Py4JJavaError: An error occurred while calling o54.getCatalogSource.
: java.lang.Error: No classification or connection in my_db.table

这似乎表明 Glue 无法看到我的表的目录条目,或者无法使用该条目中的信息,但除此之外我没有任何进一步的可见性。

有人遇到过此错误以及可能导致此错误的原因吗?

amazon-web-services pyspark amazon-athena aws-glue
3个回答
8
投票

错误消息实际上很好地描述了问题 - 正在查询的表没有分类。

通过 Glue 创建的表格注册有分类 -

csv
parquet
orc
avro
json
。请参阅使用 Athena 创建用于 AWS Glue 作业的表

我通过 Athena“手动”创建的表没有分类。请参阅下面 Glue“表格”页面的屏幕截图。

解决方案很简单:在

CREATE TABLE
脚本末尾,用户必须附加一个
classification
属性,如下所示

CREATE EXTERNAL TABLE IF NOT EXISTS my_db.my_table (
  `id` int,
  `description` string 
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe'
WITH SERDEPROPERTIES (
  'serialization.format' = ',',
  'field.delim' = ',',
  'collection.delim' = 'undefined',
  'mapkey.delim' = 'undefined'
) LOCATION 's3://my_bucket/'
TBLPROPERTIES ('classification'='csv');

现在该表在 Glue 界面中进行了分类,并且可以通过 Glue 作业访问。


1
投票

需要在您创建的表中添加分类。要通过 UI 添加它,请按照以下步骤操作:

  1. 去胶水桌子:

  1. 单击“编辑表”并添加它,如图所示:

0
投票

如果我想使用 Glue 访问 Athena 的视图该怎么办?

© www.soinside.com 2019 - 2024. All rights reserved.