6

每次我在现有数据上运行胶水爬虫时,它都会将 Serde 序列化库更改为LazySimpleSerDe,它不能正确分类(例如,对于带逗号的引用字段)

在此处输入图像描述

然后,我需要手动编辑 Glue 目录中的表格详细信息以将其更改为org.apache.hadoop.hive.serde2.OpenCSVSerde.

我试过制作自己的 csv 分类器,但这没有帮助。

如何让爬虫为生成或更新的表指定特定的序列化库?

4

1 回答 1

5

您目前无法在 Glue Crawler 中指定 SerDe,但这里有一个解决方法...

  1. 使用以下配置创建一个 Glue Crawler。

    启用“仅添加新列”- 这会在发现新列时添加它们,但不会删除或更改数据目录中现有列的类型

    启用“使用表中的元数据更新所有新的和现有的分区” - 此选项从其父表继承元数据属性,例如它们的分类、输入格式、输出格式、SerDe 信息和架构。对表中这些属​​性的任何更改都会传播到其分区。

  2. 运行爬虫创建表,它将创建一个带有“org.apache.hadoop.hive.serde2.lazy.LazySimpleSerDe”的表 - 将其编辑为“org.apache.hadoop.hive.serde2.OpenCSVSerde”。

  3. 重新运行爬虫。

  4. 如果在爬虫重新运行时添加了新分区,它也将使用“org.apache.hadoop.hive.serde2.OpenCSVSerde”创建。

  5. 您现在应该有一个设置为 org.apache.hadoop.hive.serde2.OpenCSVSerde 并且不会重置的表。

于 2020-08-13T15:52:14.627 回答