我在Glue / Athena注册了一个数据集,称之为my_db.table
。我可以通过雅典娜查询它,一切似乎都是有序的。
我试图在Glue作业中使用此表,但我收到以下相当不透明的错误消息:
py4j.protocol.Py4JJavaError: An error occurred while calling o54.getCatalogSource.
: java.lang.Error: No classification or connection in my_db.table
这似乎表明Glue无法查看我的表格的商品,或者无法使用该条目中的信息,但我没有任何进一步的可见性。
是否有人遇到此错误以及可能导致此错误的原因?
答案 0 :(得分:4)
错误消息实际上很好地描述了问题 - 正在查询的表没有分类。
通过Glue创建的表格已在分类中注册 - csv
,parquet
,orc
,avro
,json
。请参阅Creating Tables Using Athena for AWS Glue Jobs。
我通过雅典娜'手动'创建的表格没有分类。请参阅胶水“表格”页面中的以下屏幕截图。
解决方案很简单:在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界面中有一个分类,可通过胶水作业访问。