首页 文章

AWS Glue无法访问输入数据集

提问于
浏览
1

我在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 回答

  • 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界面中有一个分类,可以通过Glue作业访问 .

相关问题