【问题标题】:AWS Glue unable to access input data setAWS Glue 无法访问输入数据集
【发布时间】:2018-02-16 17:51:18
【问题描述】:

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

有人遇到过这个错误吗?是什么原因造成的?

【问题讨论】:

  • 您是否尝试过使用 Glue Crawler 创建表格?在我的项目中,只有爬虫创建的表才能与 Jobs 一起正常工作。 Athena 也可以读取 Glue Crawler 生成的表格

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


【解决方案1】:

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

通过 Glue 创建的表使用分类注册 - csvparquetorcavrojson。见Creating Tables Using Athena for AWS Glue Jobs

我通过 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 作业访问。

【讨论】:

  • 这对我不起作用 - 添加“分类”tblproperty 对我是否可以通过glueContext.create_dynamic_frame.from_catalog 读取表格没有影响。只有 Glue 爬虫创建的表似乎有效。我什至尝试让我的 Athena 表的所有属性与 Glue 爬虫表的属性完全匹配,但它仍然无法正常工作。仍在努力寻找解决方案...
  • 有趣 - 以上不适用于 CSV 表,但它确实适用于镶木地板。嗯……
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-10-30
  • 2019-02-18
  • 2021-05-01
  • 1970-01-01
  • 2020-04-12
  • 2019-08-07
  • 2020-10-02
相关资源
最近更新 更多