AWS Glue无法访问输入数据集

Kir*_*rst 4 amazon-web-services pyspark amazon-athena aws-glue

我在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
Run Code Online (Sandbox Code Playgroud)

这似乎表明Glue无法看到我的表的目录条目,或者无法使用该条目中的信息,但是我没有其他的可见性。

有谁遇到过此错误,可能是什么原因引起的?

Kir*_*rst 6

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

通过胶水创建的表与分类注册- ,csvparquetorc,。avro json请参阅使用Athena为AWS Glue作业创建表

我通过Athena“手动”创建的表没有分类。请从“表胶水”页面中查看以下屏幕截图。

在此处输入图片说明

解决方案很简单:在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');
Run Code Online (Sandbox Code Playgroud)

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

  • 这对我不起作用-添加“分类” tblproperty对我是否可以通过`glueContext.create_dynamic_frame.from_catalog`读取表没有影响。似乎只有Glue搜寻器创建的表可以工作。我什至尝试使Athena表的所有属性与Glue搜寻器表的属性完全匹配,但仍然无法正常工作。仍在尝试寻找解决方案... (2认同)
  • 有趣的是-上面的内容不适用于CSV表格,但它* did *可以用于镶木地板表格。嗯... (2认同)