5

我在 Glue / Athena 中注册了一个数据集,称之为my_db.table. 我可以通过 Athena 查询它,一切似乎都正常。

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

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

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

有没有人遇到过这个错误,可能是什么原因造成的?

4

2 回答 2

9

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

通过 Glue 创建的表使用分类注册 - csv, parquet, orc, avro, json。请参阅使用 Athena 为 AWS Glue 作业创建表

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

在此处输入图像描述

解决方案很简单:在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 作业访问。

于 2017-09-08T17:16:35.303 回答
1

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

  1. 去胶水的桌子:

在此处输入图像描述

  1. 单击编辑表并添加它,如图所示: 在此处输入图像描述
于 2022-01-08T16:19:31.310 回答