首页 文章

表格的异常通过AWS Glue Crawler识别并存储在数据目录中

提问于
浏览
15

我正在努力 Build 公司的新数据湖,并试图找到最好的和最近的选择在这里工作 . 所以,我找到了一个非常好的解决方案来使用EMR S3 Athena Glue .

我做的过程是:

1 - 运行Apache Spark脚本,以生成由Orc存储的S3中按日期分区的3000万行 .

2 - 运行Athena查询以创建外部表 .

3 - 检查与胶水数据目录相关的EMR表,它工作得很好 . Spark和Hive都可以访问 .

4 - 在按日期分区的其他文件夹中生成另外3000万行 . 在Orc格式

5 - 运行识别新表的Glue Crawler . 添加到数据目录,Athena能够进行查询 . 但Spark和Hive无法做到这一点 . 请参阅以下例外:

Spark Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcStruct

Hive Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: Error evaluating audit_id (state=,code=0)

我正在检查是否有任何序列化问题,我发现了这个:

手动创建表(配置):

Input format org.apache.hadoop.hive.ql.io.orc.OrcInputFormat

Output format org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat

Serde serialization lib org.apache.hadoop.hive.ql.io.orc.OrcSerde

orc.compress SNAPPY

使用Glue Crawler创建的表:

Input format org.apache.hadoop.mapred.TextInputFormat

Output format org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat

Serde serialization lib org.apache.hadoop.hive.ql.io.orc.OrcSerde

因此,这不适用于从Hive或Spark中读取 . 它适用于雅典娜 . 我已经更改了配置,但对Hive或Spark没有任何影响 .

有人遇到过这个问题?

1 回答

  • 3

    好,

    几个星期后我发布了这个问题,AWS解决了这个问题 . 正如我在上面所示,问题是真实的,这是Glue的一个错误 .

    因为它是一种新产品,有时仍然存在一些问题 .

    但这已得到妥善解决 . 现在查看表格的属性:

    ROW FORMAT SERDE 
      'org.apache.hadoop.hive.ql.io.orc.OrcSerde' 
    STORED AS INPUTFORMAT 
      'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' 
    OUTPUTFORMAT 
      'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
    

相关问题