AWS Glue无法访问输入数据集

时间:2017-09-07 21:59:45

标签: amazon-web-services pyspark amazon-athena aws-glue

我在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无法查看我的表格的商品,或者无法使用该条目中的信息,但我没有任何进一步的可见性。

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

1 个答案:

答案 0 :(得分:4)

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

通过Glue创建的表格已在分类中注册 - csvparquetorcavrojson。请参阅Creating Tables Using Athena for AWS Glue Jobs

我通过雅典娜'手动'创建的表格没有分类。请参阅胶水“表格”页面中的以下屏幕截图。

enter image description here

解决方案很简单:在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界面中有一个分类,可通过胶水作业访问。