amazon-web-services - AWS Glue 无法访问输入数据集

标签 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

这似乎表明 Glue 无法看到我的表的目录条目,或者无法使用该条目中的信息,但除此之外我没有任何进一步的可见性。

有没有人遇到过这个错误,可能是什么原因造成的?

最佳答案

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

通过 Glue 创建的表使用分类注册 - csv , parquet , orc , avro , json .见 Creating Tables Using Athena for AWS Glue Jobs .

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

enter image description here

解决方法很简单:在 CREATE TABLE 的末尾脚本用户必须附加一个 classification像这样的属性(property)

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

关于amazon-web-services - AWS Glue 无法访问输入数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46105700/

相关文章:

c# - 从 Cognito 组担任 IAM 角色

python - Pyspark StructType 未定义

python-3.x - Pyspark:如何将 spark 数据帧转换为 json 并将其另存为 json 文件?

sql - Amazon Athena 从指令中获取所有文件而不是一个文件

amazon-web-services - 在哪里可以找到等效的AWS上详细的Heroku日志?

amazon-ec2 - 使用用户定义的参数来控制 AWS ELB 实例的自动扩展

amazon-web-services - AWS Lambda SAM,指定多个策略

apache-spark - 将模型分数应用于 Spark DataFrame - Python

amazon-redshift - 扫描外部表(S3 数据)时 Redshift Spectrum 中的成本控制

python - 将 pandas DataFrame 保存到带有日期类型的 Parquet 的最佳方法