我正在努力建立公司的新数据湖,并且正在努力寻找在这里工作的最佳和最新选择。 因此,我找到了一个非常好的解决方案来使用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无法做到这一点。请参阅以下例外:
火花
Caused by: java.lang.ClassCastException: org.apache.hadoop.io.Text cannot be cast to org.apache.hadoop.hive.ql.io.orc.OrcStruct
蜂房
Error: java.io.IOException: org.apache.hadoop.hive.ql.metadata.HiveException: Error evaluating audit_id (state=,code=0)
我正在检查是否有任何序列化问题,我发现了这个:
输入格式 org.apache.hadoop.hive.ql.io.orc.OrcInputFormat
输出格式 org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat
Serde序列化库 org.apache.hadoop.hive.ql.io.orc.OrcSerde
orc.compress SNAPPY
输入格式 org.apache.hadoop.mapred.TextInputFormat
输出格式 org.apache.hadoop.hive.ql.io.HiveIgnoreKeyTextOutputFormat
Serde序列化库 org.apache.hadoop.hive.ql.io.orc.OrcSerde
所以,这不是从Hive或Spark读取的。它适用于雅典娜。我已经更改了配置,但对Hive或Spark没有任何影响。
有人遇到过这个问题吗?
答案 0 :(得分: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'